Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
--- Array c++ (http://www.informatikerboard.de/board/thread.php?threadid=1486)


Geschrieben von C++ am 28.04.2013 um 12:26:

 

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.



Geschrieben von Airblader am 28.04.2013 um 12:30:

 

Ich klinke mich hier nun aus. Ich hatte schon vorher gesagt, dass es ermüdend ist, wenn man einfach nur ignoriert wird und den nächsten Rateversuch kommentieren soll. Erhalte ich keine Antwort auf meinen Beitrag, dann schreibe ich eben auch keine mehr.

Dennoch weiterhin viel Erfolg beim Programmieren.



Geschrieben von C++ am 28.04.2013 um 12:44:

 

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.



Geschrieben von C++ am 28.04.2013 um 13:02:

 

Soll ich das a irgendwie vorher definieren?



Geschrieben von C++ am 28.04.2013 um 13:26:

 

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.



Geschrieben von C++ am 28.04.2013 um 14:05:

 

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;


}

}

}



Geschrieben von Karlito am 28.04.2013 um 14:06:

 

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



Geschrieben von Airblader am 28.04.2013 um 14:29:

 

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.



Geschrieben von C++ am 28.04.2013 um 15:18:

 

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?



Geschrieben von Airblader am 28.04.2013 um 15:31:

 

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.



Geschrieben von C++ am 28.04.2013 um 16:09:

 

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.



Geschrieben von C++ am 28.04.2013 um 16:18:

 

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?



Geschrieben von Karlito am 28.04.2013 um 16:26:

 

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


Forensoftware: Burning Board, entwickelt von WoltLab GmbH