Bitte angucken und helfen
-
kk
-
neuer thread mit problem eröffnet
-
Soulpincher schrieb:
So es geht aber... irgendwie wird nur 0 ausgegeben
Ja, wenn du die init_map()-Funktion nicht aufrufst, wird die Zuordnung der Farben auch nicht initialisiert.
Um den Linker-Fehler zu beheben, nützt es nichts, den Funktionsaufruf auszukommentieren. Du solltest entweder den Prototyp (vor der main()) und den Funktionsaufruf umbenennen in "init_map(...)" oder die Funktionsdefinition am Ende in "InitMap(...)", dann passen sie auch wieder zusammen.
@NewProggie: Egal, wie kreativ du die Zensur zu umgehen versuchst, "vor-raus" ist und bleibt falsch.
-
Ok danke das Programm läuft wunderbar.... du warst mir große Hilfe
-
Jetzt habe ich ein neues programm mit neuem problem^^
#include <iostream> // cin, cout #include <string> // string #include <map> // map #include <algorithm> // transform #include <math.h> // pow #include <conio.h> //getche using namespace std; int string2int(string st); int main ( void ) { // int main char Auswahl = 'x'; int Ergl = 0; int Erg1 = 0; char Auzwahl = 'x'; long double Zahl = 0.0; int tol = 0; long double Erg = 0.0; short int Multiplikator = 0; int Zahl1 = 0; int Zahl2 = 0; int Zahl3 = 0; int Zahl4 = 0; long double Zahl5 = 990000000000.0; int exp =0; cout<<"Moechten sie [W] die Widerstandszahl oder [F] die Farbcodierung eingeben?\n"<<endl; cin>>Auswahl; if (Auswahl == 'F') { cout<<"\nGeben sie die gewuenschte Anzahl der Ringe an (V = 4 oder R = 5)\n"<<endl; cin>>Auswahl; } string Ring1; string Ring2; string Ring3; string Ring4; string Ring5; switch (Auswahl) { //switchcase case 'W': cout <<"Wollen sie ihr ergebnis in 4 oder 5 Ringsystem angegeben haben? 5/4"<<endl; Auzwahl = getche(); cout<<"\n"<<endl; cout<<"Wiederstand eingeben: "; cin>>Zahl ; cout<<"\n"<<endl; switch (Auzwahl) { //5 Ringe case '5': { cout<<"[20 ] fuer Tolleranzen von + 20.00% bis - 20.00%"<<endl; cout<<"[10 ] fuer Tolleranzen von + 10.00% bis - 10.00%"<<endl; cout<<"[ 5 ] fuer Tolleranzen von + 5.00% bis - 5.00%"<<endl; cout<<"[ 2 ] fuer Tolleranzen von + 2.00% bis - 2.00%"<<endl; cout<<"[ 1 ] fuer Tolleranzen von + 1.00% bis - 1.00%"<<endl; cout<<"[ 0.5 ] fuer Tolleranzen von + 0.50% bis - 0.50%"<<endl; cout<<"[ 0.25] fuer Tolleranzen von + 0.25% bis - 0.25%"<<endl; cout<<"[ 0.10] fuer Tolleranzen von + 0.10% bis - 0.10%"<<endl; cout<<"[ 0.05] fuer Tolleranzen von + 0.05% bis - 0.05%"<<endl; cin>>tol ; cout<<"\n"<<endl;break; } //4 Ringe case '4': { cout<<"[20 ] fuer Tolleranzen von + 20.00% bis - 20.00%"<<endl; cout<<"[10 ] fuer Tolleranzen von + 10.00% bis - 10.00%"<<endl; cout<<"[ 5 ] fuer Tolleranzen von + 5.00% bis - 5.00%"<<endl; cout<<"[ 2 ] fuer Tolleranzen von + 2.00% bis - 2.00%"<<endl; cout<<"[ 1 ] fuer Tolleranzen von + 1.00% bis - 1.00%"<<endl; cout<<"[ 0.5 ] fuer Tolleranzen von + 0.50% bis - 0.50%"<<endl; cout<<"[ 0.25] fuer Tolleranzen von + 0.25% bis - 0.25%"<<endl; cout<<"[ 0.10] fuer Tolleranzen von + 0.10% bis - 0.10%"<<endl; cin>>tol ; cout<<"\n"<<endl;break; } } break; case 'V': cout<<"Geben sie bitte die Farbe des ersten Ringes an:\n\n"; cout<<"Braun"<<endl; cout<<"Rot"<<endl; cout<<"Orange"<<endl; cout<<"Gelb"<<endl; cout<<"Gruen"<<endl; cout<<"Blau"<<endl; cout<<"Violett"<<endl; cout<<"Grau"<<endl; cout<<"Weiss"<<endl; cin>>Ring1; cout<<"Geben sie bitte die Farbe des zweiten Ringes an:\n\n"; cout<<"Schwarz"<<endl; cout<<"Braun"<<endl; cout<<"Rot"<<endl; cout<<"Orange"<<endl; cout<<"Gelb"<<endl; cout<<"Gruen"<<endl; cout<<"Blau"<<endl; cout<<"Violett"<<endl; cout<<"Grau"<<endl; cout<<"Weiss"<<endl; cin>>Ring2; cout<<"Geben sie bitte die Farbe des dritten Ringes an:\n\n"; cout<<"Schwarz"<<endl; cout<<"Braun"<<endl; cout<<"Rot"<<endl; cout<<"Orange"<<endl; cout<<"Gelb"<<endl; cout<<"Gruen"<<endl; cout<<"Blau"<<endl; cout<<"Violett"<<endl; cout<<"Grau"<<endl; cout<<"Weiss"<<endl; cout<<"Gold"<<endl; cout<<"Silber"<<endl; cin>>Ring3; cout<<"Geben sie bitte die Farbe des vierten Ringes an:\n\n"; cout<<"Keine"<<endl; cout<<"Braun"<<endl; cout<<"Rot"<<endl; cout<<"Gruen"<<endl; cout<<"Blau"<<endl; cout<<"Violett"<<endl; cout<<"Gold"<<endl; cout<<"Silber"<<endl; cin>>Ring4;break; case 'R': cout<<"Geben sie bitte die Farbe des ersten Ringes an:\n\n"; cout<<"Braun"<<endl; cout<<"Rot"<<endl; cout<<"Orange "<<endl; cout<<"Gelbt "<<endl; cout<<"Gruen"<<endl; cout<<"Blau"<<endl; cout<<"Violett"<<endl; cout<<"Grau"<<endl; cout<<"Weiss\n\n"<<endl; cin>>Ring1; cout<<"\nGeben sie bitte die Farbe des zweiten Ringes an:\n\n"; cout<<"Schwarz"<<endl; cout<<"Braun"<<endl; cout<<"Rot"<<endl; cout<<"Orange"<<endl; cout<<"Gelb"<<endl; cout<<"Gruen"<<endl; cout<<"Blau"<<endl; cout<<"Violett"<<endl; cout<<"Grau"<<endl; cout<<"Weiss\n\n"<<endl; cin>>Ring2; cout<<"Geben sie bitte die Farbe des dritten Ringes an:\n\n"; cout<<"Schwarz"<<endl; cout<<"Braun"<<endl; cout<<"Rot"<<endl; cout<<"Orange"<<endl; cout<<"Gelb"<<endl; cout<<"Gruen"<<endl; cout<<"Blau"<<endl; cout<<"Violett"<<endl; cout<<"Grau"<<endl; cout<<"Weiss\n\n"<<endl; cin>>Ring3; cout<<"Geben sie bitte die Farbe des vierten Ringes an:\n\n"; cout<<"Schwarz"<<endl; cout<<"Braun"<<endl; cout<<"Rot"<<endl; cout<<"Orange"<<endl; cout<<"Gelb"<<endl; cout<<"Gruen"<<endl; cout<<"Blau"<<endl; cout<<"Gold"<<endl; cout<<"Silber\n\n"<<endl; cin>>Ring4; cout<<"Geben sie bitte die Farbe des fünften Ringes an:\n\n"; cout<<"Keine"<<endl; cout<<"Braun"<<endl; cout<<"Rot"<<endl; cout<<"Gruen"<<endl; cout<<"Blau"<<endl; cout<<"Violett"<<endl; cout<<"Grau "<<endl; cout<<"Gold"<<endl; cout<<"Silber\n\n"<<endl; cin>>Ring5;break; default :cout<<"Falsche eingabe";break; }//switchcase switch (Auswahl) {//switchcase2 case 'W' : switch (Auzwahl) { //5 Ringe case '5': { if (Zahl >= 100) { Erg = Zahl ; for (int exp = 0; Erg >=1000; exp++) { Erg = Erg / 10; } //cout<<Erg; if (exp <= 9) { int Zahl6 = (int)Erg; Zahl3 = Zahl6 % 10; Zahl4 = Zahl6 / 10; Zahl2 = Zahl4 % 10; Zahl1 = Zahl4 / 10; cout <<"Ring 1 ="<<Zahl1<<endl; cout <<"Ring 2 ="<<Zahl2<<endl; cout <<"Ring 3 ="<<Zahl3<<endl; cout <<"Ring 4 = 10^"<<exp<<endl; } else { cout<<"Fatal Error\n.\a\n.\a\n.\a "<<endl; } } else { Erg = Zahl * 10; for (int exp = -1; Erg <=10; exp--) { Erg = Erg * 10; } int Zahl6 = (int)Erg; Zahl3 = Zahl6 % 10; Zahl4 = Zahl6 / 10; Zahl2 = Zahl4 % 10; Zahl1 = Zahl4 / 10; cout <<"Ring 1 ="<<Zahl1<<endl; cout <<"Ring 2 ="<<Zahl2<<endl; cout <<"Ring 3 ="<<Zahl3<<endl; cout <<"Ring 4 = 10^"<<exp<<endl; } break; } //4 Ringe case '4': { if(Zahl >= 10) { Erg = Zahl; if( Zahl >=100) { Erg = Zahl / 10; for (int exp = 1; Erg >=100; exp++) Erg = Erg /10; int Zahl6 = (int)Erg; Zahl2 = Zahl6 % 10; Zahl1 = Zahl6 / 10; cout <<"Ring 1 ="<<Zahl1<<endl; cout <<"Ring 2 ="<<Zahl2<<endl; cout <<"Ring 3 = 10^"<<exp<<endl;break; } int Zahl6 = (int)Erg; Zahl2 = Zahl6 % 10; Zahl1 = Zahl6 / 10; cout <<"Ring 1 ="<<Zahl1<<endl; cout <<"Ring 2 ="<<Zahl2<<endl; cout <<"Ring 3 = 10^"<<exp<<endl; } else { Erg = Zahl * 10; for (int exp = -1; Erg <=1; exp--) { Erg = Erg * 10; } int Zahl6 = (int)Erg; Zahl2 = Zahl6 % 10; Zahl1 = Zahl6 / 10; cout <<"Ring 1 ="<<Zahl1<<endl; cout <<"Ring 2 ="<<Zahl2<<endl; cout <<"Ring 3 = 10^"<<exp<<endl; } break; } } break; case 'V' : { Erg1= pow(10,string2int(Ring3)); Ergl = (10*string2int(Ring1) + string2int(Ring2)) * Erg1; cout << Erg << endl; } case 'R' : { Erg1= pow(10,string2int(Ring4)); Ergl = (100*string2int(Ring1) + (10*string2int(Ring2))+ string2int(Ring3)) * Erg1; cout << Ergl << endl; } }//switchcase return 0; } //int main int string2int(string st) { if (st == "schwarz") return 0; else if (st == "braun") return 1; else if (st == "rot") return 2; else if (st == "orange") return 3; else if (st == "gelb") return 4; else if (st == "gruen") return 5; else if (st == "blau") return 6; else if (st == "violett") return 7; else if (st == "grau") return 8; else if (st == "weiss") return 9; else if (st == "gold") return -1; else if (st == "silber") return -2; else return -3; }
Ich muss bei der Wiederstandszahl eingabe die zahl einem wort zuordnen
geht das so?:
int int2string(int st) { if (st == 0) return "schwarz"; else if (st == 1) return "braun"; else if (st == 2) return "rot"; else if (st == 3) return "orange"; else if (st == 4) return "gelb";
-
Wenn du es so machen willst, klappt das sicher, aber das ist extrem umständlich. Besser wäre auf jeden Fall ein switch-case anstelle der if-else-Kaskade. Oder du nimmst dir deine Farbnamen-Zuordnung von oben und suchst darin per find_if() den Zielwert:
//Vergleichsfunktion bool has_number(pair<const string,int> val, int number) { return val.second==number; } //Zuordnung Nummer zu Name //als zweiten Parameter übergibst du die map mit den Farbnamen und -nummern string farbname(int num,const map<string,int>& farben) { map<string,int>::const_iterator pos = find_if(farben.begin(),farben.end(),bind2nd(has_number,num)); return pos!=farben.end() ? pos->first : ""; }
-
Wo würdest du das hier genau einfügen?
wäre gut wenn du mir das markieren könntest oder direkt einfügen#pragma warning(disable:4786) #include <iostream> // cin, cout #include <string> // string #include <map> // map #include <algorithm> // transform #include <math.h> // pow #include <conio.h> //getche() using namespace std; void initMap( map<string,int>& Data ); int main () { char Auswahl = 'X'; int Ergl = 0; int Erg1 = 0; char Auzwahl = 'x'; long double Zahl = 0.0; int tol = 0; long double Erg = 0.0; short int Multiplikator = 0; int Zahl1 = 0; int Zahl2 = 0; int Zahl3 = 0; int Zahl4 = 0; int exp =0; map< string, int > Farbnummern; // Wir erstellen eben die Map welche die Werte string und int aufnehmen kann initMap( Farbnummern ); // Wir übergeben die erstellte Map an die Funktion welche sie mit deinen Farben füllt cout<<"Moechten sie [W] die Widerstandszahl oder [F] die Farbcodierung eingeben?\n"<<endl; cin>>Auswahl; if (Auswahl == 'F') { cout<<"\nGeben sie die gewuenschte Anzahl der Ringe an (V = 4 oder R = 5)\n"<<endl; cin>>Auswahl; } string Ring1; //Sollte klar sein ^^ string Ring2; string Ring3; string Ring4; string Ring5; switch (Auswahl) { case 'W': cout <<"Wollen sie ihr ergebnis in 4 oder 5 Ringsystem angegeben haben? 5/4"<<endl; Auzwahl = getche(); cout<<"\n"<<endl; cout<<"Wiederstand eingeben: "; cin>>Zahl ; cout<<"\n"<<endl; switch (Auzwahl) { //5 Ringe case '5': { cout<<"[20 ] fuer Tolleranzen von + 20.00% bis - 20.00%"<<endl; cout<<"[10 ] fuer Tolleranzen von + 10.00% bis - 10.00%"<<endl; cout<<"[ 5 ] fuer Tolleranzen von + 5.00% bis - 5.00%"<<endl; cout<<"[ 2 ] fuer Tolleranzen von + 2.00% bis - 2.00%"<<endl; cout<<"[ 1 ] fuer Tolleranzen von + 1.00% bis - 1.00%"<<endl; cout<<"[ 0.5 ] fuer Tolleranzen von + 0.50% bis - 0.50%"<<endl; cout<<"[ 0.25] fuer Tolleranzen von + 0.25% bis - 0.25%"<<endl; cout<<"[ 0.10] fuer Tolleranzen von + 0.10% bis - 0.10%"<<endl; cout<<"[ 0.05] fuer Tolleranzen von + 0.05% bis - 0.05%"<<endl; cin>>tol ; cout<<"\n"<<endl;break; } //4 Ringe case '4': { cout<<"[20 ] fuer Tolleranzen von + 20.00% bis - 20.00%"<<endl; cout<<"[10 ] fuer Tolleranzen von + 10.00% bis - 10.00%"<<endl; cout<<"[ 5 ] fuer Tolleranzen von + 5.00% bis - 5.00%"<<endl; cout<<"[ 2 ] fuer Tolleranzen von + 2.00% bis - 2.00%"<<endl; cout<<"[ 1 ] fuer Tolleranzen von + 1.00% bis - 1.00%"<<endl; cout<<"[ 0.5 ] fuer Tolleranzen von + 0.50% bis - 0.50%"<<endl; cout<<"[ 0.25] fuer Tolleranzen von + 0.25% bis - 0.25%"<<endl; cout<<"[ 0.10] fuer Tolleranzen von + 0.10% bis - 0.10%"<<endl; cin>>tol ; cout<<"\n"<<endl;break; } } break; case 'V': cout<<"Geben sie bitte die Farbe des ersten Ringes an:\n\n"; cout<<"Braun"<<endl; cout<<"Rot"<<endl; cout<<"Orange"<<endl; cout<<"Gelb"<<endl; cout<<"Gruen"<<endl; cout<<"Blau"<<endl; cout<<"Violett"<<endl; cout<<"Grau"<<endl; cout<<"Weiss"<<endl; cin>>Ring1; cout<<"Geben sie bitte die Farbe des zweiten Ringes an:\n\n"; cout<<"Schwarz"<<endl; cout<<"Braun"<<endl; cout<<"Rot"<<endl; cout<<"Orange"<<endl; cout<<"Gelb"<<endl; cout<<"Gruen"<<endl; cout<<"Blau"<<endl; cout<<"Violett"<<endl; cout<<"Grau"<<endl; cout<<"Weiss"<<endl; cin>>Ring2; cout<<"Geben sie bitte die Farbe des dritten Ringes an:\n\n"; cout<<"Schwarz"<<endl; cout<<"Braun"<<endl; cout<<"Rot"<<endl; cout<<"Orange"<<endl; cout<<"Gelb"<<endl; cout<<"Gruen"<<endl; cout<<"Blau"<<endl; cout<<"Violett"<<endl; cout<<"Grau"<<endl; cout<<"Weiss"<<endl; cout<<"Gold"<<endl; cout<<"Silber"<<endl; cin>>Ring3; cout<<"Geben sie bitte die Farbe des vierten Ringes an:\n\n"; cout<<"Keine"<<endl; cout<<"Braun"<<endl; cout<<"Rot"<<endl; cout<<"Gruen"<<endl; cout<<"Blau"<<endl; cout<<"Violett"<<endl; cout<<"Gold"<<endl; cout<<"Silber"<<endl; cin>>Ring4;break; case 'R': cout<<"Geben sie bitte die Farbe des ersten Ringes an:\n\n"; cout<<"Braun"<<endl; cout<<"Rot"<<endl; cout<<"Orange "<<endl; cout<<"Gelbt "<<endl; cout<<"Gruen"<<endl; cout<<"Blau"<<endl; cout<<"Violett"<<endl; cout<<"Grau"<<endl; cout<<"Weiss\n\n"<<endl; cin>>Ring1; cout<<"\nGeben sie bitte die Farbe des zweiten Ringes an:\n\n"; cout<<"Schwarz"<<endl; cout<<"Braun"<<endl; cout<<"Rot"<<endl; cout<<"Orange"<<endl; cout<<"Gelb"<<endl; cout<<"Gruen"<<endl; cout<<"Blau"<<endl; cout<<"Violett"<<endl; cout<<"Grau"<<endl; cout<<"Weiss\n\n"<<endl; cin>>Ring2; cout<<"Geben sie bitte die Farbe des dritten Ringes an:\n\n"; cout<<"Schwarz"<<endl; cout<<"Braun"<<endl; cout<<"Rot"<<endl; cout<<"Orange"<<endl; cout<<"Gelb"<<endl; cout<<"Gruen"<<endl; cout<<"Blau"<<endl; cout<<"Violett"<<endl; cout<<"Grau"<<endl; cout<<"Weiss\n\n"<<endl; cin>>Ring3; cout<<"Geben sie bitte die Farbe des vierten Ringes an:\n\n"; cout<<"Schwarz"<<endl; cout<<"Braun"<<endl; cout<<"Rot"<<endl; cout<<"Orange"<<endl; cout<<"Gelb"<<endl; cout<<"Gruen"<<endl; cout<<"Blau"<<endl; cout<<"Gold"<<endl; cout<<"Silber\n\n"<<endl; cin>>Ring4; cout<<"Geben sie bitte die Farbe des fünften Ringes an:\n\n"; cout<<"Keine"<<endl; cout<<"Braun"<<endl; cout<<"Rot"<<endl; cout<<"Gruen"<<endl; cout<<"Blau"<<endl; cout<<"Violett"<<endl; cout<<"Grau "<<endl; cout<<"Gold"<<endl; cout<<"Silber\n\n"<<endl; cin>>Ring5;break; default :cout<<"Falsche eingabe";break; } switch (Auswahl) { case 'W' : switch (Auzwahl) { //5 Ringe case '5': { if (Zahl >= 100) { Erg = Zahl ; for (int exp = 0; Erg >=1000; exp++) { Erg = Erg / 10; } //cout<<Erg; if (exp <= 9) { int Zahl6 = (int)Erg; Zahl3 = Zahl6 % 10; Zahl4 = Zahl6 / 10; Zahl2 = Zahl4 % 10; Zahl1 = Zahl4 / 10; cout <<"Ring 1 ="<<Zahl1<<endl; cout <<"Ring 2 ="<<Zahl2<<endl; cout <<"Ring 3 ="<<Zahl3<<endl; cout <<"Ring 4 = 10^"<<exp<<endl; } else { cout<<"Fatal Error\n.\a\n.\a\n.\a "<<endl; } } else { Erg = Zahl * 10; for (int exp = -1; Erg <=10; exp--) { Erg = Erg * 10; } int Zahl6 = (int)Erg; Zahl3 = Zahl6 % 10; Zahl4 = Zahl6 / 10; Zahl2 = Zahl4 % 10; Zahl1 = Zahl4 / 10; cout <<"Ring 1 ="<<Zahl1<<endl; cout <<"Ring 2 ="<<Zahl2<<endl; cout <<"Ring 3 ="<<Zahl3<<endl; cout <<"Ring 4 = 10^"<<exp<<endl; } break; } //4 Ringe case '4': { if(Zahl >= 10) { Erg = Zahl; if( Zahl >=100) { Erg = Zahl / 10; for (int exp = 1; Erg >=100; exp++) Erg = Erg /10; int Zahl6 = (int)Erg; Zahl2 = Zahl6 % 10; Zahl1 = Zahl6 / 10; cout <<"Ring 1 ="<<Zahl1<<endl; cout <<"Ring 2 ="<<Zahl2<<endl; cout <<"Ring 3 = 10^"<<exp<<endl;break; } int Zahl6 = (int)Erg; Zahl2 = Zahl6 % 10; Zahl1 = Zahl6 / 10; cout <<"Ring 1 ="<<Zahl1<<endl; cout <<"Ring 2 ="<<Zahl2<<endl; cout <<"Ring 3 = 10^"<<exp<<endl; } else { Erg = Zahl * 10; for (int exp = -1; Erg <=1; exp--) { Erg = Erg * 10; } int Zahl6 = (int)Erg; Zahl2 = Zahl6 % 10; Zahl1 = Zahl6 / 10; cout <<"Ring 1 ="<<Zahl1<<endl; cout <<"Ring 2 ="<<Zahl2<<endl; cout <<"Ring 3 = 10^"<<exp<<endl; } break; } } break; case 'V' : transform( Ring1.begin(), Ring1.end(), Ring1.begin(), tolower ); // Wir machen aus dem eingegeben Wort kleinbuchstaben dann kann man auch RoT eingeben und er findet rot :-) transform( Ring2.begin(), Ring2.end(), Ring2.begin(), tolower ); transform( Ring3.begin(), Ring3.end(), Ring3.begin(), tolower ); cout << Farbnummern[ Ring1 ] << endl; // Wert der Ring1 entspricht ausgeben cout << Farbnummern[ Ring2 ] << endl; cout << Farbnummern[ Ring3 ] << endl; Erg1 = pow(10, Farbnummern[ Ring3 ]); Erg=(10*Farbnummern[ Ring1 ] + Farbnummern[ Ring2]) * Erg1; cout<<"Ergebnis:\t"<<Erg<<endl;break; case 'R' : transform( Ring1.begin(), Ring1.end(), Ring1.begin(), tolower ); // Wir machen aus dem eingegeben Wort kleinbuchstaben dann kann man auch RoT eingeben und er findet rot :-) transform( Ring2.begin(), Ring2.end(), Ring2.begin(), tolower ); transform( Ring3.begin(), Ring3.end(), Ring3.begin(), tolower ); transform( Ring4.begin(), Ring4.end(), Ring4.begin(), tolower ); cout << Farbnummern[ Ring1 ] << endl; // Wert der Ring1 entspricht ausgeben cout << Farbnummern[ Ring2 ] << endl; cout << Farbnummern[ Ring3 ] << endl; cout << Farbnummern[ Ring4 ] << endl; Erg1 = pow(10, Farbnummern[ Ring4 ]); Erg=(100*Farbnummern[ Ring1 ] + 10*Farbnummern[ Ring2] + Farbnummern[ Ring3 ]) * Erg1; cout<<"Ergebnis:\t"<<Erg<<endl;break; } return 0; } // Ab hier solltest du selbst mal nachlesen (irgendwo) wie das hier funktioneirt ;-) void initMap(map<string,int>& data) { //in das Array schreibst du alle Kombinationen aus Farbname und Kennnummer typedef pair<string, int> si_pair; si_pair vals[]= { si_pair( "schwarz", 0), si_pair( "braun", 1 ), si_pair( "rot", 2 ), si_pair( "orange", 3 ), si_pair( "gelb", 4 ), si_pair( "grün", 5 ), si_pair( "blau", 6 ), si_pair( "violett", 7 ), si_pair( "grau", 8 ), si_pair( "weiss", 9 ), }; int Vsize = sizeof( vals ) / sizeof( vals[0] ); copy( vals, vals + Vsize, inserter( data, data.begin() ) ); }
thx
-
Wo brauchst du denn die Umrechnung von int-Werten zu Farbcodes? Genau für diese Umrechnung (aka 'int2string()') kannst du die vorgeschlagene Funktion verwenden.
-
Also ich muss 1 mal die Farben der Ringe eingeben und den Farben ne zahlzu weisen und einmal einer Zahl ne Farbe zuweisen.
Einer Farbe die Zahl zuweisen haben wir ja drin (map)... jetzt fehlt uns nur noch der umgekehrte weg einer Zahl eine Farbe zuweisen(switch-case (W)).
Jetzt weiss ich aber nicht wo ich deine Funktion einbringen soll.
-
Soulpincher schrieb:
Also ich muss 1 mal die Farben der Ringe eingeben und den Farben ne zahlzu weisen und einmal einer Zahl ne Farbe zuweisen.
Einer Farbe die Zahl zuweisen haben wir ja drin (map)... jetzt fehlt uns nur noch der umgekehrte weg einer Zahl eine Farbe zuweisen(switch-case (W)).Die Zuordnung von Schlüssel zu Wert liefert die map<> schon frei Haus (über den Index-Zugriff), die Zuordnung in die andere Richtung ist ebenfalls in der map gespeichert, aber da gibt es keine elementare Funktion, um darauf zuzugreifen. Und genau dazu kannst du die Funktion farbname() verwenden - die sucht in der map nach einem Wert und gibt den dazu passenden Schlüssel wieder heraus.
(die Alternative wäre eine zweite map (dieses Mal map<int,string>), in der die Elemente andersherum eingetragen sind)
PS: Mir ist gerade oben ein Fehler aufgefallen *korrigiert die Funktion*
-
Mit welchen befehl kann man machen das man oben eingeben kann egal groß oder kleinbuchstaben und es trotzdem durchführt
-
kind1995 schrieb:
Mit welchen befehl kann man machen das man oben eingeben kann egal groß oder kleinbuchstaben und es trotzdem durchführt
Was will uns dieser Beitrag sagen?
(Im C(++) Quelltext mußt du exakt auf die Groß- und Kleinschreibung achten, sonst findet der Compiler/Linker deine Variablen und Funktionen nicht mehr wieder. Bei Eingabestrings kannst du dich auf eine Schreibweise (z.B. komplett klein) festlegen und alle Nutzer-Eingaben mit tolower in Kleinschreibung umwandeln, bevor du sie genauer betrachtest.)
-
Das ist aber eine gute frage auch wenn sie nicht besonders gut formuliert ist^^
wenn ich
transform( Auswahl.begin(), Auswahl.end(), Auswahl.begin(), tolower );
einfüge kommen folgende fehler:
F:\ShoolProject\Schoolproject.cpp(36) : error C2228: Der linke Teil von '.begin' muss eine Klasse/Struktur/Union sein
F:\ShoolProject\Schoolproject.cpp(36) : error C2228: Der linke Teil von '.end' muss eine Klasse/Struktur/Union sein
F:\ShoolProject\Schoolproject.cpp(36) : error C2228: Der linke Teil von '.begin' muss eine Klasse/Struktur/Union sein
F:\ShoolProject\Schoolproject.cpp(36) : error C2780: '_OI __cdecl std::transform(_II1,_II1,_II2,_OI,_Bop)' : Erwartet 5 Argumente - 4 unterstuetzt
c:\programme\microsoft visual studio\vc98\include\algorithm(247) : Siehe Deklaration von 'transform'wie kann man das beheben
-
Auswahl ist ein einzelner char, da brauchst du kein transform(), um den umzuwandeln:
Auswahl=tolower(Auswahl);
-
CStoll schrieb:
Auswahl ist ein einzelner char, da brauchst du kein transform(), um den umzuwandeln:
Auswahl=tolower(Auswahl);
thx
-
lol.. wieder umsonst ein post geschrieben^^
-
Ok... danke für deine Hilfe!
Alle 3 Programme funktionieren einwandfrei^^
Jetzt kommt der nächste Schritt xD
Kennst du ein gutes tutorial für eine graphische Umsetzung des Programms?
-
Kennst du ein gutes tutorial für eine graphische Umsetzung des Programms?
Explizit für dein Programm gibt es das natürlich nicht.
Aber auf www.cpp-world.de, unter 'Tutorials' findest du ein paar gute Links zu WinAPI Tutorials (vorausgesetzt, du möchtest das mit der WinAPI lösen). Ich habe sie auch selber getestet, also ich kann sie nur empfehlen
MfG, mikey.