Array c++ |
C++ unregistriert
|
|
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
|
#include <iostream>
using namespace std;
int main() {
string fruechte[5] = {"Ananas", "Apfel", "Banane", "Birne", "Blaubeere"};
for (int i = 0; i < 5; i++) {
if (fruechte[i][i+1] == fruechte[i][a] ) {
cout << fruechte[i] << endl;
}
}
}
|
|
Für mich würde es so sinn ergeben , aber es funktioniert nicht weil das a nicht definiert ist.
|
|
28.04.2013 12:26 |
|
|
C++ unregistriert
|
|
Zitat: |
Original von Airblader
Verwende für die Darstellung von Code bitte die Code-Tags (über dem Textfeld die Raute).
code: |
1:
|
string fruechte[5] = {Ananas , Apfel, Banane , Birne , Blaubeere }; |
|
Dies ist falsch (kompiliert das überhaupt?). DIe Früchte sind Strings und müssen dementsprechend in Anführungszeichen gesetzt werden.
code: |
1:
|
string frucht = " Ananas"; |
|
Mal abgesehen davon, dass diese Zeile fehl am Platze ist,
hast du hier ein Leerzeichen drin, das dir bei Aufgaben wie "überprüfe den zweiten Buchstaben" gehörig in die Suppe spucken wird. C++ ist eine Programmiersprache und als solche gibt es auch Dinge wie eine vernünftige Darstellung und "Rechtschreibung", auf die du unbedingt achten musst; denn im Gegensatz zu Menschen im Alltag verzeiht dir ein Computer keine Sprachfehler.
Gehen wir also mal hiervon aus:
code: |
1:
2:
3:
4:
5:
6:
7:
|
#include <iostream>
using namespace std;
int main() {
string fruechte[5] = {"Ananas", "Apfel", "Banane", "Birne", "Blaubeere"};
} |
|
Für Aufgabe a) wollen wir alle Früchte überprüfen, d.h. wir müssen eine Schleife über alle Früchte machen:
code: |
1:
2:
3:
|
for (int i = 0; i < 5; i++) {
// ....
} |
|
Innerhalb der Schleife schauen wir uns das Element fruechte[i] an, das nun nacheinander eben die Werte "Ananas", "Apfel" usw. hat. Den zweiten Buchstaben des Wortes erhalten wir dann entsprechend über fruechte[i][1]. Und diesen Wert wollen wir nun überprüfen, d.h. innerhalb der Schleife muss etwas in dieser Art stehen:
code: |
1:
2:
3:
|
if (/* irgendwas mit fruechte[i][1] */) {
// gib fruechte[i] aus
} |
|
Jetzt bist du erstmal wieder dran, dich mit diesen Informationen daran zu versuchen. |
DAs sind die 2 Sätze .
Aber ich weiss immer nochn icht was ich falsch mache.
So funktioniert mein programm aber der code ist immer noch falsch.
#include <iostream>
using namespace std;
int main() {
string fruechte[5] = {"Ananas", "Apfel", "Banane", "Birne", "Blaubeere"};
for (int i = 0; i < 5; i++) {
if (fruechte[i][1] == fruechte[i][i+1] ) {
cout << fruechte[i] << endl;
}
}
}
Bin verzweifelt.
|
|
28.04.2013 12:44 |
|
|
C++ unregistriert
|
|
Soll ich das a irgendwie vorher definieren?
|
|
28.04.2013 13:02 |
|
|
C++ unregistriert
|
|
Magst du die Frage irgendwann auch mal beantworten, wieso du der Meinung bist, dass das Vergleichen des zweiten Bichstabens mit dem des nächsten Wortes irgendwas damit zu tun hat, ob der zweite Buchstabe ein a ist
Wenn ich so richtig jetzt denke .
Ist das doch irgendwie falsch.
|
|
28.04.2013 13:26 |
|
|
C++ unregistriert
|
|
Habs:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
|
#include <iostream>
using namespace std;
int main() {
string fruechte[5] = {"Ananas", "Apfel", "Banane", "Birne", "Blaubeere"};
for (int i = 0; i < 5; i++) {
if (fruechte[i][i+1] == 'a' ) {
cout << fruechte[i] << endl;
}
}
} |
|
|
|
28.04.2013 14:05 |
|
|
Karlito
Kaiser
Dabei seit: 11.04.2011
Beiträge: 1.461
|
|
Hallo,
ich empfehle dir: nimm dir ein Buch und lerne die Grundlagen. Jede hilfe hier ist nur dann möglich, wenn Du weißt was du überhaupt tust. Bei jedem Schritt rätst Du noch etwas dazu. Du kannst auch noch 10 mal deinen Namen hier wechseln. Das wird dir nicht weiter helfen. Die Helfer hier werden immer wieder die Geduld verlieren! Du kennst ja meine Meinung bereits aus vorhergehenden Beiträgen als du als Nutzer "info" geschrieben hast, oder?.
Hier ist eine Reihe von Tipps wo Du dir Grundlagen anarbeiten kannst. Dabei bitte auch die Bücher durcharbeiten. Deine Rateversuche hier sind einfach nicht Sinnvoll und Zielführend.
Auch kannst Du einach mal versuchen den Code anderer nachzuvollziehen. Dabei lernt man auch viel. Dazu ist es aber auch wichtig, dass Du die Grundlagen verstehst. Das hier ist kein Deutschunterricht, wo man einfach was schreibt, was gut oder sinnvoll klingt! Die Bedeutung jedes einzelnen Zeichens ist Formal festgelegt wie in der Mathematik.
Und ja, du denkst offensichtlich Falsch. Das liegt daran, dass du nicht Systematisch an die Sache rangehst! Ein Buch kann dabei helfen.
Ich wünsche dir viel erfolg weiterhin. Gern kannst Du Verständnisfragen weiterhin hier Stellen, aber bitte erst dann, wenn Du dich in der Lage siehst, die Antworten zu verstehen.
VG,
Karlito
|
|
28.04.2013 14:06 |
|
|
Airblader
Doppel-As
Dabei seit: 03.03.2013
Beiträge: 138
Herkunft: München
|
|
Im Übrigen ist obiger Code noch immer falsch. Und ich denke auch, dass es hier an mehr fehlt als nur "Programmier-Wissen".
Die eher bescheidenen Versuche, mich doch noch zu einer Antwort zu bewegen, indem man meinen ellenlangen Beitrag zitiert und sagt "Da sind die zwei Sätze", lasse ich im Interesse aller mal lieber unkommentiert.
__________________ The best thing about a boolean is that even if you're wrong, you're only off by a bit.
|
|
28.04.2013 14:29 |
|
|
C++ unregistriert
|
|
Ja ich weiss ich hätte es auch so schreiben können :
fruechte[i][1] == 'a'
Aber ich verstehe nicht warum es auf beide weise funktioniert?
|
|
28.04.2013 15:18 |
|
|
Airblader
Doppel-As
Dabei seit: 03.03.2013
Beiträge: 138
Herkunft: München
|
|
Tut es nicht. Die Ausgabe für das Array mit fünf Früchten stimmt nur zufällig – wie man verifizieren kann, wenn man sich überlegt, was der Code tut.
__________________ The best thing about a boolean is that even if you're wrong, you're only off by a bit.
|
|
28.04.2013 15:31 |
|
|
C++ unregistriert
|
|
Na gut ich probiere mal weiter:
Ich hab mich jetzt an die b rangemacht:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
|
#include <iostream>
#include <string>
using namespace std;
int main() {
char Eingabe;
cin >> Eingabe;
cout << "(A)alle Fruechte, die an 2. Stelle ein a haben, ausgeben " << endl;
cout << "(B) aus dem Apfel eine Apfelsine machen, alten und neuen Wert ausgeben" << endl;
cout << "(C)alle Fruechte, deren Name länger als 8 Zeichen ist, ausgeben " << endl;
cout << " (D) (freiwillig) alle Fruechte, die im Namen beere haben,den Bestandteil ohne beere ausgeben" << endl;
string fruechte[5] = {"Ananas", "Apfel", "Banane", "Birne", "Blaubeere"};
switch(Eingabe) {
case 'a':
Eingabe = 'A';
for (int i = 0; i < 5; i++) {
if (fruechte[i][1] == 'a' ) {
cout << fruechte[i] << endl;
}
}
break;
case'b':
Eingabe = 'B';
int tmp;
string fruechte = "Apfel";
fruechte == "Apfelsine";
fruechte == tmp;
cout << tmp << endl;
break;
defaul:
break;
} |
|
Ich hab versucht das string frucht zu verändern und dann in eine neue variable einzulesen und diese Auszugeben .
Was mache ich falsch ?
Ich komme seit stunden nicht auf den Fehler.
Bitte um tipps.
|
|
28.04.2013 16:09 |
|
|
C++ unregistriert
|
|
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
|
#include <iostream>
#include <string>
using namespace std;
int main() {
char Eingabe;
cin >> Eingabe;
cout << "(A)alle Fruechte, die an 2. Stelle ein a haben, ausgeben " << endl;
cout << "(B) aus dem Apfel eine Apfelsine machen, alten und neuen Wert ausgeben" << endl;
cout << "(C)alle Fruechte, deren Name länger als 8 Zeichen ist, ausgeben " << endl;
cout << " (D) (freiwillig) alle Fruechte, die im Namen beere haben,den Bestandteil ohne beere ausgeben" << endl;
string fruechte[5] = {"Ananas", "Apfel", "Banane", "Birne", "Blaubeere"};
switch(Eingabe) {
case 'a':
Eingabe = 'A';
for (int i = 0; i < 5; i++) {
if (fruechte[i][1] == 'a' ) {
cout << fruechte[i] << endl;
}
}
break;
case'b':
Eingabe = 'B';
int tmp;
string fruechte = "Apfel";
fruechte = "Apfelsine";
cout << fruechte << endl;
break;
defaul:
break;
}
} |
|
Oder wäre es einfach so in ordnung ?
Das scheint zu funktionieren?
|
|
28.04.2013 16:18 |
|
|
Karlito
Kaiser
Dabei seit: 11.04.2011
Beiträge: 1.461
|
|
Nein, das funktioniert nicht. Ich habe nicht den ganzen Code geprüft, aber der Fall 'b' ist unvollständig und es sind unnütze Anweisungen enthalten (Eingabe='A'). Fall a könnte evtl. funktionieren, ich bin jedoch nicht mehr bereit mich mit dem Code auseinanderzusetzen.
Zitat: |
Original von C++
Das scheint zu funktionieren? |
Das Fragezeichen zeigt, dass Du selbst nicht weißt ob der Code funktioniert... Ich glaube er sollte nicht einmal Compilieren (Schreibfehler in Zeile 83).
Ich finde es nicht sinnvoll den Thread fortzuführen und schließe ihn deshalb.
VG,
Karlito
|
|
28.04.2013 16:26 |
|
|
|