Seite 1 von 2

Re: Informatikgedönse

Verfasst: 11.12.2009, 17:14
von dAb
Gebs doch einfach mal ein. ;)

1. Sollte klappen, schneidet aber die Kommastellen von d ab (gibt ne Warnung beim Kompilieren), von daher eher nicht typkorrekt
2. Alles Double-Werte, passt
3. Würde nein sagen. Gibt dir halt anstelle der Zahl en Zeichen aus.
4. String = Text, also passts
5. geht nicht. Strings addieren geht nur über Variablen, aber nicht direkt über die Zeichen.
string s, a="a", b="2";

s = a + b;
Das würde gehen.

6. ergibt ein t. Chars holen sich nur das letzte Zeichen.
7. das passt dann
8. alles Integerwerte, passt

Re: Informatikgedönse

Verfasst: 11.12.2009, 18:21
von Lunkens

Code: Alles auswählen

public class TestBlubb {
	
	@Test
	public void testRicken(){
		String s;		
		char ch, z;		
		double d = 0.0;
		double pi = 1.0;
		int i = 0, j = 0;
		double r = 0;
		
		
		
		
		i = d * 2; // Type mismatch: cannot convert from double to int
		d = pi * r;
		ch = i + 4; // Type mismatch: cannot convert from int to char
		s = "Ich bin ein Integer-Wert";
		s = "6" + "4";
		ch = 'bit';   // Invalid character constant
		ch = 'z';
		i = (i * j) - j;
		
	}
So siehts aus, also hat Rangoo Recht :)
Das funzt nur, wenn die Variablen, wie oben, initializiert werden.
Alles Java.

Wo kein Kommentar ( // Wurst) ist, die funzen.

Re: Informatikgedönse

Verfasst: 11.12.2009, 18:31
von dAb
In C++ bekomme ich für 5. nen Fehler...
Zwei Zeiger können nicht addiert werden.

Re: Informatikgedönse

Verfasst: 11.12.2009, 18:55
von Lunkens
Keine Ahnung wie C++ Zeichenketten addiert, Java macht es, aber es ist so "schlechter Stil", weil "wurst" + "kot" uneffektiv ist, da nimmt man halt String.app("blubb")

Gott sind wir geile Nerds!!!

Re: Informatikgedönse

Verfasst: 11.12.2009, 19:13
von dAb
Lunkens hat geschrieben:Keine Ahnung wie C++ Zeichenketten addiert, Java macht es, aber es ist so "schlechter Stil", weil "wurst" + "kot" uneffektiv ist, da nimmt man halt String.app("blubb")
Hatte mich halt auch gewundert, weil das in meinem Zitat funktioniert. Ist ja eigentlich auch nichts anderes...

Re: Informatikgedönse

Verfasst: 12.12.2009, 12:19
von Lunkens
Na ja, in der Realität kümmert es eh wenige Leute, Zahlen werden als Zeichenketten in Datenbanken gespeichert, wenn man Zahlen speichert nimmt man irgendwas, was funzt :)
In der Realität isses halt auch nix anderes als nen Klemptner, der das Scheisshaus mit ner Rohrzange zusammenhält :)
Im Studium sabbeln se eh viel unnützes.
SPASS macht so "wer ist die geile Variable"-Zeug wahrlich nicht, wobei sich sich manche gerne über Vorteile der Datentypen gegenüber anderen Sprachen unterhalten.

Re: Informatikgedönse

Verfasst: 14.12.2009, 18:12
von Anstoss Player
die frage ist an sich dumm (nicht nur wegen der nichtangabe der sprache), weil man es auch einfach hätte ausprobieren können.

Re: Informatikgedönse

Verfasst: 19.12.2009, 18:30
von Anstoss Player
Rangoo hat geschrieben:eine halbe Bachelorarbeit. :D
also sowas wie ein kleiner Tagebucheintrag oder ein kurzer Vortrag? :)20

Re: Informatikgedönse

Verfasst: 19.12.2009, 18:58
von Lunkens
Teil 3 geht aber auch fix, wenn nun nicht megakomplexe Webseite sein soll. kann ich dir bissel helfen, wenn nötig
Hantiere gerade auf der Arbeit mit JavaEE rum und baue Ajax-Webseiten mit Richfaces.

Re: Informatikgedönse

Verfasst: 15.01.2010, 19:16
von Undertaker
das handbuch? :D

Re: Informatikgedönse

Verfasst: 20.01.2010, 10:37
von Lunkens
Nichts was irgendwie für normale Menschen durchschaubar, nützlich wäre.
Die Oberfläche für die Plausibilierungsprüfungen für den Gesundheitsfonds, wo bis zu 5,3 Mrd Datensätze geprüft werden. Halt so Masken, wo die Prüfungen starten könnten oder Importe. Aber im Grunde ja Bratze, weils halt wieder "nur" Funktionen in irgendwelchen Javaklassen abstösst. Nebenbei noch son Telefonverzeichnis basierend auf JAVA EE (eine Enterprise Bean saugt 1x die Tabelle und stellt sie allen Clients / Weboberflächen zur Verfügung, recht simple gehalten).
Aber so XML "Datenbank" und daraus Adressdatenbank ziehen und schöne Oberfläche ist ja auch nicht ganz langweilig (spannend aber wahrlich auch nicht :D ).

Re: Informatikgedönse

Verfasst: 19.02.2010, 08:41
von Lunkens
Da hab ich gutes PDF für Anfänger, also für mySQL + PHP. Werd ich mal Link posten oder hochladen.

Ansonsten:
http://www.amazon.de/PHP-5-Grundlagen-P ... 300&sr=8-1

Re: Informatikgedönse

Verfasst: 19.02.2010, 16:17
von Lunkens
dass du noch zum nerd mutierst, wer hätte das gedacht!

Re: Informatikgedönse

Verfasst: 18.07.2010, 19:52
von Lunkens
Nutzen solch ein Modell zu lernen: 0,00% :)

Re: Informatikgedönse

Verfasst: 18.07.2010, 21:21
von dAb
Im ersten Versuch bin ich da durchgerasselt. :D

Re: Informatikgedönse

Verfasst: 19.07.2010, 19:17
von Lunkens
Ach bei uns war auch immer jede Menge Leute, die sich in die Botz gekack haben wegen der und der Klausur und blah, am Ende läufts.
Und C++ ist nun auch nicht ganz anders als der Rest. Richtig lernen tut man es halt nur, wenn man wat schreibt, so Grundlagen hab ich auch so 20x gelesen, aber richtig "können" tuste es nur, wenn man dich zwingt es zu nutzen.

Re: Informatikgedönse

Verfasst: 21.07.2010, 01:06
von dAb
Studierst du in Heidelberg Informatik?

Und dann C++ erst im zweiten Semester? Finds jetzt eigentlich nicht schwer. Also das was wir in den zwei Semestern darin gemacht haben, ist jetzt nicht so die Welt. Denke mal ihr werdet dann da auch nicht viel was anderes machen.

Re: Informatikgedönse

Verfasst: 22.10.2010, 17:19
von Torsch
Kackt euch ma fett inne Hose, ihr Internetz-Proggler.

Schöne Algorythmen aus der Graphentheorie heraus zu schälen und diese in eine Sprache mit Garbage-Collection für Faule Pragmatiker zu transformieren ist ein Genuß.

:effe:

Re: Informatikgedönse

Verfasst: 22.10.2010, 17:22
von Lunkens
NERDFIGHT INCOMING!!!

Re: Informatikgedönse

Verfasst: 24.10.2010, 19:55
von dAb
Würde das so machen:

Code: Alles auswählen

int main () {

	int a=0;

	while(true) {
		char zeichen;
		cin >> zeichen;

		if (zeichen == 'a') {
			a++;
		}
		if (zeichen == 'b') {
			cout << a;
			break;
		}
	}

	return 0;
}

Re: Informatikgedönse

Verfasst: 27.10.2010, 19:23
von dAb
Rangoo hat geschrieben: Wie sollt ihr denn einlesen? Zeichen für Zeichen (also immer mit Enter dazwischen) oder alle am Stück und dann nacheinander durchlaufen, bis ein @ kommt?
Ist doch egal. Zumindest bei meinem Code. :)24

Aber übrigens: Wenn ich das bei mir statts mit if mit switch/case gemacht hätte... Wie hätte ich denn da das break der Schleife reinbringen können? Denn die switch-Anweisung benutzt ja auch ein break. Weißt du da was oder geht das einfach nicht?

Re: Informatikgedönse

Verfasst: 28.10.2010, 19:50
von dAb
Rangoo hat geschrieben: break sollte dich nur aus einem Block rauswerfen.

Code: Alles auswählen

for
  for
    break
wirft dich ja auch nur aus der inneren for-Schleife raus.
Ja, das ist mir schon klar. Frage war ja auch wie ich aus beiden komme.

Re: Informatikgedönse

Verfasst: 29.10.2010, 21:11
von dAb
Stimmt, ne if-anweisung hinten dran machen... Ist mir ja gar nicht in den Sinn gekommen. :)2

Re: Informatikgedönse

Verfasst: 31.10.2010, 02:31
von Torsch
Lunkens hat geschrieben:NERDFIGHT INCOMING!!!
:effe:
Rangoo hat geschrieben: Alternativ auch mit Sprungmarke, allerdings weiß ich da bei C++ nicht, inwiefern die genutzt werden dürfen und sollen.
Bei c++ "darf" man eigentlich alles.
Man sollte aber, wenn man alles macht, da ja alles erlaubt ist, immer im Hinterkopf behalten, wo man seine Variablen in den Speicher abgelegt hat, sonst springt man schnell mal von der Titten- in die Mösensektion, findet es gut, weiß aber nicht genau, warum das so gut flutschte...
:effe:

Da ich durch C# inzw. verwöhnt und verweichlicht bin, muss ich an dieser Stelle auf jeden Fall aber auch mal erwähnen, dass es alleine aus Design-Pattern-Sicht heraus zum kotzen, äh ich meine, schlechter Stil ist, aus einer Schleife mit einer Sprungmarke auszubrechen.
Wer so simplifiziert vorgeht, hat über die Schleifen-Bedingung nicht richtig nachgedacht...klassisch für "fauler Sack" :effe:
Denn bei einer gut durchdachten Schleife braucht man keinen "Rauswurf" am Ende, da sie für sich ein Ende in der Bedingung ihrer Existenz findet.
(Mit Ausnahme einer Ausnahme natürlich. Aber dafür sollte jeder gute Programmierer einen Ausnahme-Bevollmächtigten eingebettet haben ;) )

while faulersack
verhaudich++;
until !faulersack

:effe:

Grütze aus der Mütze
Torge

PS:
Kleiner Tipp @ Ricken:
-Ricken- hat geschrieben:

Code: Alles auswählen

#include <iostream>

using namespace std;

int main()
{
char zeichen[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
int a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;

cout << "Bitte geben Sie eine Zeichenkette aus Kleinbuchstaben ein: ";
cin >> zeichen;


for (int i=0; zeichen[i]!='@'; i++)
    {
    if (zeichen[i] == 'a') b + 1;
    else if (zeichen[i] == 'b') b + 1;
    else if (zeichen[i] == 'c') c + 1;
    else if (zeichen[i] == 'd') d + 1;
    else if (zeichen[i] == 'e') e + 1;
    else if (zeichen[i] == 'f') f + 1;
    else if (zeichen[i] == 'g') g + 1;
    else if (zeichen[i] == 'h') h + 1;
    else if (zeichen[i] == 'i') i + 1;
    else if (zeichen[i] == 'j') j + 1;
    else if (zeichen[i] == 'k') k + 1;
    else if (zeichen[i] == 'l') l + 1;
    else if (zeichen[i] == 'm') m + 1;
    else if (zeichen[i] == 'n') n + 1;
    else if (zeichen[i] == 'o') o + 1;
    else if (zeichen[i] == 'p') p + 1;
    else if (zeichen[i] == 'q') q + 1;
    else if (zeichen[i] == 'r') r + 1;
    else if (zeichen[i] == 's') s + 1;
    else if (zeichen[i] == 't') t + 1;
    else if (zeichen[i] == 'u') u + 1;
    else if (zeichen[i] == 'v') v + 1;
    else if (zeichen[i] == 'w') w + 1;
    else if (zeichen[i] == 'x') x + 1;
    else if (zeichen[i] == 'y') y + 1;
    else if (zeichen[i] == 'z') z + 1;
    }

cout <<  "Der Buchstabe 'a' kommt " << a << " mal vor" << endl;
cout <<  "Der Buchstabe 'b' kommt " << b << " mal vor" << endl;
cout <<  "Der Buchstabe 'c' kommt " << c << " mal vor" << endl;
cout <<  "Der Buchstabe 'd' kommt " << d << " mal vor" << endl;
cout <<  "Der Buchstabe 'e' kommt " << e << " mal vor" << endl;
cout <<  "Der Buchstabe 'f' kommt " << f << " mal vor" << endl;
cout <<  "Der Buchstabe 'g' kommt " << g << " mal vor" << endl;
cout <<  "Der Buchstabe 'h' kommt " << h << " mal vor" << endl;
cout <<  "Der Buchstabe 'i' kommt " << i << " mal vor" << endl;
cout <<  "Der Buchstabe 'j' kommt " << j << " mal vor" << endl;
cout <<  "Der Buchstabe 'k' kommt " << k << " mal vor" << endl;
cout <<  "Der Buchstabe 'l' kommt " << l << " mal vor" << endl;
cout <<  "Der Buchstabe 'm' kommt " << m << " mal vor" << endl;
cout <<  "Der Buchstabe 'n' kommt " << n << " mal vor" << endl;
cout <<  "Der Buchstabe 'o' kommt " << o << " mal vor" << endl;
cout <<  "Der Buchstabe 'p' kommt " << p << " mal vor" << endl;
cout <<  "Der Buchstabe 'q' kommt " << q << " mal vor" << endl;
cout <<  "Der Buchstabe 'r' kommt " << r << " mal vor" << endl;
cout <<  "Der Buchstabe 's' kommt " << s << " mal vor" << endl;
cout <<  "Der Buchstabe 't' kommt " << t << " mal vor" << endl;
cout <<  "Der Buchstabe 'u' kommt " << u << " mal vor" << endl;
cout <<  "Der Buchstabe 'v' kommt " << v << " mal vor" << endl;
cout <<  "Der Buchstabe 'w' kommt " << w << " mal vor" << endl;
cout <<  "Der Buchstabe 'x' kommt " << x << " mal vor" << endl;
cout <<  "Der Buchstabe 'y' kommt " << y << " mal vor" << endl;
cout <<  "Der Buchstabe 'z' kommt " << z << " mal vor" << endl;

int test;
cin >> test;

return 0;
}
Falls du tatsächlich mal nicht um so eine "Massen"-Abfrage herum kommst, empfehle ich dir eine strukturierte case-Abfrage.

Ach und, mag eine Art persönlicher Geschmack sein, for-Zählschleifen sollte man auch eher umgehen.
Ist das Problem simpel, 1-2-3, dann for-Schleife, aber ansonsten würde ich immer, wie ja auch hier in den "Korrekturen" gezeigt, immer while-Schleifen verwenden.
Es sei denn, die Logik der Schleife erlaubte eine while-Schleife nur, weil sie mit einer in ihr befindlichen z.B. if-Bedingung umgangen werden kann oder eine Schleife soll mindestens einmal durchlaufen, bevor die Bedingung greift.

Beispiel:
Die Schleife
var bool a:=true;
while (!a)
messagebox.show("blub");
a:=!a;
;
wird gar nicht erst "ausgeführt".

Kehrst du die Bedingung der Schleife um, damit sie überhaupt startet, sehe dies so aus:
var bool a:=true;
while (a)
if (!a)
messagebox.show ("blub");
;

Willst du aber auf jeden Fall in der "ersten" Logik bleiben und mindestens ein "blub" lesen, musst du in dieser Logik eine for-Schleife verwenden. Aber nur in dieser...

Beispiel:
var bool a:=true;
for (int x:=0 to x++)
if (!a)
messagebox.show ("blub")
a:=!a;
;

In diesem Falle bekommst du zwar unendlich minus 1 viele "blub"'s, aber ich hoffe, dass Prinzip wurde klar.

Kann daran liegen, dass ich gerade betrunken bin, aber deine IFelseIFelse-Abfrage macht in sich schon keinen Sinn, da du nach falls ja, dann, falls nein, falls ja, dann fragst, oder sehe ich hier gerade eine ZWEI??? :jedi: :lol:

Grütze aus der Mütze
Torge

PS: Mann hab ich einen im Kahn...
Mir fällt gerade ein, dass es ja auch noch Do-While-Schleifen gibt....also vergiss die for-Schleifen! ;)

Re: Informatikgedönse

Verfasst: 31.10.2010, 10:03
von Trillennium
Kleiner Hinweis: Es gibt auch do...while Schleifen.
Die werden auch immer mindestens einmal ausgeführt.

Anosnsten ist das Buchstabenzählprogramm viel zu kompliziert und umständlich geschrieben.
Man kann char auch in int casten (siehe ASCII-Tabelle).

Dann kannst du das alles in schönen kleinen Arrays regeln.

Hier der Code dazu:

Code: Alles auswählen

// cppTest.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>


int main(int argc, char* argv[])
{
	char input;
	char bst;
	int value;
	int count[28];
	for (int i = 0; i < 26; i++)
	{
		count[i] = 0;
	}

	std::cin >> input;
	while (input != '@')
	{
		value = (int) input - 97;
		count[value] ++;
		std::cin >> input;
	}

	for (int i = 0; i < 26; i++)
	{
		bst = (char)(i + 97);
		std::cout << bst << " kommt " << count[i] << " mal vor\r\n"; 
	}

	std::cin >> input;
	return 0;
}


Re: Informatikgedönse

Verfasst: 31.10.2010, 16:47
von mash
Mich wundert ja, dass holsten hier noch nix mit Lenkrädern und WoW gepostet hat :D

Re: Informatikgedönse

Verfasst: 02.11.2010, 16:44
von mash
in der Klausur hilft dir auch keiner :effe:

Re: Informatikgedönse

Verfasst: 03.11.2010, 09:37
von Lunkens
Habt ihr in euer Jugend auch Magickarten gezockt? :effe: :D

Re: Informatikgedönse

Verfasst: 03.11.2010, 14:02
von knopfler
es ist nie zu spät anzufangen.
hab die 4th, 5th, arab nights, urzasdingsbums und dann kam mehr alk und
die spielpartner gingen mir verloren :D
online gehts aber auch

Re: Informatikgedönse

Verfasst: 03.11.2010, 16:56
von Lunkens
kannste nicht ne funktion machen die den begrüssungstext deutsch oder englisch ausgibt und halt ne funktion die ne variable mit der sprache setzt?
oder wie meinste das?

funktion x macht halt irgendwas, setzt dann auf englisch wenn return = furz
und dann kommt die funktion die begrüssungstext ausgibt und die guckt halt vorher was ne globale variable bekommen hat von der funktion x

Re: Informatikgedönse

Verfasst: 10.11.2010, 21:04
von Torsch
Rangoo hat geschrieben:Musst du mir nicht sagen. Ich gehöre zu der "Never ever auch nur ein einziges break, continue oder leeres return"-Fraktion und hatte regelmäßig Diskussionen mit den Kollegen deshalb. ;)
Guter Mann.
Rangoo hat geschrieben:Ist die Anzahl der Schritte bekannt, nimmt man for, wird der Abbruch durch irgendwas bestimmt, das nicht 3-2-1 ist, nimmt man while.
Nicht unbedingt.
Wenn es nämlich um Zeitersparniss geht, ist eine while- oder do-while-Schleife effizienter, da ein überflüssiger Speicherzugriff vermieden wird, denn eine for-schleife überprüft die in Startbedingung festgelegte Verweildauer überflüssigerweise auch beim ersten Durchlauf.
for (int x:=0;x< 10;x++)
überprüft schon beim definieren der Schleife, ob x>10 ist.
Wenn man Probleme im Nanosekundenbereich bearbeitet oder Funktionen mit Block-Schleifen benutzt, kann das durchaus einen Unterschied machen.
Trillennium hat geschrieben:Kleiner Hinweis: Es gibt auch do...while Schleifen.
Die werden auch immer mindestens einmal ausgeführt.
Falls das an mich gerichtet war:
Erst zu Ende lesen, dann antworten :effe:
-Ricken- hat geschrieben:[...]aber ich lese gerade das globale variablen uncool sind... ?!
Das kommt auf die Definition von global an...denn im Grunde ist jede Variable "global", solange sie von ihren Bewohnern aufrufbar ist :effe:
if(auswahl == 'd')deutsch();
else english();
Freude kommt auf, wenn jemand D oder E eintippt und dann doof glotzt :D

Generell würde ich eher zu einer Funktion tendieren.
char getName (bool deutsch)
{
if (deutsch)
blabla
else
schlonzronz
}

Davon mal abgesehen habe ich nicht ganz begriffen, wo dein Problem liegt ;)

Grütze aus der Mütze
Torge

Re: Informatikgedönse

Verfasst: 10.11.2010, 22:22
von Torsch
Rangoo hat geschrieben: Bei einer while-Schleife auch. ;)
Und bei so zeitkritischen Anwendungen würde man auch breaks benutzen...
Ja, aber der Unterschied ist vergleichbar mit
x:=x+1;
und
x:=x++;

Und Schleifenausbrecher haben nichts mit zeitlicher Effizienz zu tun, sondern mit schlechten Schleifen :effe:

Re: Informatikgedönse

Verfasst: 10.11.2010, 23:15
von Torsch
Rangoo hat geschrieben: Inwiefern vergleichbar? Bei for und while ist beides isomorph, bei dem Beispiel liefert das zweite ein anderes Ergebnis.
Inwiefern anderes Ergebnis?
Bei Beiden wird x um eins erhöht.
Nur der Speicherzugriffsaufwand ist ein Anderer...

Grütze aus der Mütze
Torge

Re: Informatikgedönse

Verfasst: 10.11.2010, 23:55
von Torsch
Schreib ich Kongolesisch? :effe:

Aber danke für die Zusammenfassung und Bestätigung meiner Aussage.
Wobei ich "zurückschreiben" eher als "überschreiben" formuliert hätte.

Grütze aus der Mütze
Torge

Re: Informatikgedönse

Verfasst: 11.11.2010, 12:16
von Lunkens
Programmiert ihr eigentlich was für die Wirtschaft oder "nur so" Unigedöhnse?

Re: Informatikgedönse

Verfasst: 12.11.2010, 04:20
von Torsch
Also ich programmiere Algorithmen, die im weitesten Sinne als Steuermechanismen zu betrachten sind und die auch in WoW einsetzbar sind.
Also eigentlich bin ich der/die/das Thinktank hinter LENKRAD und Pisse :effe:

PS: Aber nicht Kotze, davon distanziere ich mich. Das hat eine Kongurrenzfirma zu verantworten.

Re: Informatikgedönse

Verfasst: 12.11.2010, 08:44
von Lunkens
Jo, ich bin auch der bezahlte Horst, der Datenbankberechnungen programmiert, welche für kapitalistische Scheisse Müll verteilen.
Mache JAVA EE, C#, aber momentan seit Monaten TSQL, was ne ziemliche 2 Cent Nutte ist.
Wunderte mich nur, da ihr von Nanosekunden schaffelt, bisher hab ich nur verreckte IT-Systeme im realen Leben gesehen, wo man froh ist, dass es läuft und keiner weiss warum :)

Re: Informatikgedönse

Verfasst: 13.11.2010, 02:21
von dAb
Lunkens hat geschrieben:Programmiert ihr eigentlich was für die Wirtschaft oder "nur so" Unigedöhnse?
T-Systems :)24

Aber progge in Magik. Kennt kein Schwein, ist auch nicht schlimm. :D

Re: Informatikgedönse

Verfasst: 13.11.2010, 17:48
von Trillennium
@dAb: aber nicht in Berlin, oder?

Re: Informatikgedönse

Verfasst: 14.11.2010, 23:05
von dAb
Da sitzen zwar auch Leute von unserem Team, aber ich bin in Darmstadt.

Bist du denn da oder was?

Re: Informatikgedönse

Verfasst: 15.11.2010, 17:02
von Trillennium
Nee, das nicht, aber die entwickeln das Programm, was ich beruflich verwende.

Re: Informatikgedönse

Verfasst: 16.11.2010, 12:32
von Trillennium

Code: Alles auswählen

// cppTest.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>

struct Film
{
   char gerName[100];
   char orgName[100];
   int vjahr;
   char director[100];
};

Film* filmDB[100];

Film* erzeugeFilm()
{
	Film *f = new Film();
	std::cout << "Director: " << std::endl;
	std::cin >> f->director;
	std::cout << "Jahr: " << std::endl;
	std::cin >> f->vjahr;
	std::cout << "Originalname: " << std::endl;
	std::cin >> f->orgName;
	std::cout << "deutscher Name: " << std::endl;
	std::cin >> f->gerName;
	return f;
}

int main(int argc, char* argv[])
{
	char auswahl = 'a';

	while (auswahl != 'n')
	{
		std::cout << "Bitte geben Sie j ein, um einen weiteren Film einzutragen." << std::endl
			<< "Bitte geben Sie n ein, um das Programm zu beenden." << std::endl
			<< "Bitte geben Sie d ein, um einen Film zu löschen." << std::endl
			<< "Bitte geben Sie p ein, um die Daten aller gespeicherten Filme auszugeben." << std::endl;
		std::cin  >> auswahl;

		switch(auswahl)
		{
			case 'j': 
				{					
					for(int i = 0; i < 100; i++)
					{       
						if(filmDB[i] == NULL)
						{
							Film *f = erzeugeFilm();
							filmDB[i] = f;
							break;
						}
					}
					break;
				}
			case 'p': 
				{
					for(int i = 0; i < 100; i++)
					{       
						if(filmDB[i] != NULL)
						{
							std::cout << "Film #" << i << " in der Filmadatenbank:"<< std::endl;
							std::cout << "Deutscher Name des Films: " << filmDB[i]->gerName << std::endl;
							std::cout << "Originaltitel des Films: " << filmDB[i]->orgName << std::endl;
							std::cout << "Veröffentlichungsjahr des Films: " << filmDB[i]->vjahr << std::endl;
							std::cout << "Regie: " << filmDB[i]->director << std::endl;
						}
					}
					break;
				}
			case 'd':
				{
					std::cout << "Welcher Film (Index) soll gelöscht werden?" << std::endl;
					int index = -1;
					std::cin >> index;
					if (index >= 0 && index <= 99)
					{
						delete filmDB[index];
						filmDB[index] = NULL;
					}
					break;
				}
		}
	}

	delete [] *filmDB;
	std::cout << "Auf Wiedersehen!";
	std::cin >> auswahl;
	return 0;
}


Re: Informatikgedönse

Verfasst: 21.11.2010, 20:39
von Trillennium
Kein Ding :)

Re: Informatikgedönse

Verfasst: 03.12.2010, 20:07
von Trillennium
Lerne es lieber erstmal unter Windows ODER unter Linux. Reines C++ funktioniert meist auch unter beiden Betriebssystemen.

Re: Informatikgedönse

Verfasst: 08.12.2010, 19:41
von Trillennium
Uff, schwer zu lesen dein Code.

Hier mal Pseudocode (Java-Style):

while(datei hat zeilen) do
string zeile = datei.lieszeile

String tagname = zeile.substring(0, zeile.indexof(' '))
zeile = zeile.substring(zeile.indexof(' ');

String paar1= zeile.substring(0, zeile.indexof(' '))
zeile = zeile.substring(zeile.indexof(' ');

String paar2= zeile.substring(0, zeile.indexof(' '))

String attr1 = paar1.substring(0, paar1.indexof('='))
String value1 = paar1.substring(paar1.indexof('='))

String attr2 = paar2.substring(0, paar2.indexof('='))
String value2 = paar2.substring(paar2.indexof('='))

end do

Falls du es konkret brauchst, meld dich nochmal, dann helf ich dir.


Andere Frage: Müsst ihr char* verwenden oder kennst du nur std::string nicht?

Re: Informatikgedönse

Verfasst: 15.12.2010, 08:54
von Trillennium

Code: Alles auswählen

#include <stdafx.h>
#include <iostream>
#include<fstream>
#include <string>

class ClToken
{
public:
	std::string getTagName() { return tagName; }
	std::string getAttribut1Name() { return attribut1Name; }
	std::string getAttribut1Wert() { return attribut1Wert; }
	std::string getAttribut2Name() { return attribut2Name; }
	std::string getAttribut2Wert() { return attribut2Wert; }	

	void setAttribut1Name(std::string attribut1Name) {this->attribut1Name = attribut1Name;}
	void setAttribut1Wert(std::string attribut1Wert) {this->attribut1Wert = attribut1Wert;}
	void setAttribut2Name(std::string attribut2Name) {this->attribut2Name = attribut2Name;}
	void setAttribut2Wert(std::string attribut2Wert) {this->attribut2Wert = attribut2Wert;}
	void setTagName(std::string tagname) {this->tagName = tagname;}
private:
	std::string tagName;
	std::string attribut1Name;
	std::string attribut1Wert;
	std::string attribut2Name;
	std::string attribut2Wert;
};

int main()
{
	std::ifstream file("c:\\test.txt");
    std::string buffer;
	int count = 0;

	while(std::getline(file, buffer))
	{
		count++;
		ClToken *token = new ClToken();

		token->setTagName(buffer.substr(1, buffer.find_first_of(' ') - 1));
		buffer = buffer.substr(buffer.find_first_of(' ') + 1, buffer.length() - buffer.find_first_of(' '));

		std::string attr1 = buffer.substr(0, buffer.find_first_of(' '));
		token->setAttribut1Name(attr1.substr(0, attr1.find_first_of('=')));
		token->setAttribut1Wert(attr1.substr(attr1.find_first_of('=')+ 1, attr1.length() - attr1.find_first_of('=')));
		
		std::string attr2 = buffer.substr(buffer.find_first_of(' ') + 1, buffer.length() - buffer.find_first_of(' ') - 2);
		token->setAttribut2Name(attr2.substr(0, attr2.find_first_of('=')));
		token->setAttribut2Wert(attr2.substr(attr2.find_first_of('=')+ 1, attr2.length() - attr2.find_first_of('=')));
		
		std::cout << "Tag " << count << std::endl;
		std::cout << "Tagname: " << token->getTagName() << std::endl;
		std::cout << "Attr1: " << token->getAttribut1Name() << " : " << token->getAttribut1Wert() << std::endl;
		std::cout << "Attr2: " << token->getAttribut2Name() << " : " << token->getAttribut2Wert() << std::endl;		
		
		std::cout << std::endl;
		 
	}
	return 0;
}

Re: Informatikgedönse

Verfasst: 04.02.2011, 13:14
von Lunkens
Mal was zu Windows Skripten

Wenn ich mit %1 den Filename bekomme, also quasi für das Kontext Menü in windows

"Editiere mit Notepad" und dann
notepad.exe %1 funzt ja wunderbar, er liefert den kompletten Filenamen an Notepad.

Gibts da ne Möglichkeit nur die Dateiendung oder ur den Dateinamen zu bekommen?

Also %1 liefert "C:\MeiMuddaIhrKudder\hallo.txt"

ich brauche aber "hallo" oder "txt"

geht dat?
Rangoo sprich :D

Re: Informatikgedönse

Verfasst: 04.02.2011, 15:41
von Lunkens
Rangoo hat geschrieben:Ja, geht.

Google!

%~x1

Ernsthaft, schon mal gegoogelt? :D
........................ liebe menschen, die immer davon ausgehen dat der andere nen vollspasti ist :D
nachem echt allem möglichen
wonach hast du? hab command line arguments, windows context menu und blubb
liefert leider exakt nichts, erscheint statt filenamen halt nur %~x1.
alternativ zu %1 noch %~n1 oder %l gefunden, was auch nicht geht, liefert immer absoluten path
weil windows wohl nur die argumente übergibt und nicht das ding als datei behandelt, quasi nur strings, die nach anzahl der ausgewählten files im explorer übergeben werden

andere menschen haben sich dann programm geschrieben, dat den filenamen dann verarbeitet, aber will ja direkt von windows nur den dateinamen ohne endung überliefert bekommen, wenn ich vom kontextmenu ne .exe oder ähnliches aufrufe

Re: Informatikgedönse

Verfasst: 04.02.2011, 16:09
von Lunkens
jo, die dinger hat ich probiert
die funzen wohl in .bat files, aber nicht vom explorer aus
da haste wohl nur %1 - %x was dir den filenamen übergibt
die dort angebenen argumente werden gar nicht aufgelöst

geht halt um erweiterung des kontextmenus (wie zb open with notepad) im zusammenspiel mit der regedit, DA soll an die .exe halt "c:\abc.txt" nicht übergeben werden sondern zb nur "abc"
funzt mit den obrigen dingern leider allet nich

Re: Informatikgedönse

Verfasst: 04.02.2011, 16:27
von Lunkens
naja, mach ich es halt von hinten durch die brust ins auge und lege ne .bat datei an, die %1 verarbeitet