mit welchen eingaben...



  • was hat des mit dem vektor < > auf sich??

    kann ich des auch mim array machen??



  • muss ich des noch in irgendeine schleife einbinden... bei mir funtz immer noch net..

    #include <iostream>
    using namespace std;

    int main (void)
    {
    int Zahl[10], i = 0, k, b;
    double a;

    while (i<10)
    {
    cout << "Bitte " << i+1 << "te Zahl eingeben" << endl;
    cin >> a;

    b = ((int)a);

    if(a < 10 || a != b)

    cout << "Die eingegebene zahl ist zu klein, versuchen Sie es erneut." << endl;

    else if(a > 20)

    cout << "Die eingegebene Zahl ist zu groß, versuchen Sie es erneut." << endl;

    else if(a !=b)

    cout << "Die eingegebene Zahl ist keine ganze Zahl, versuchen Sie es erneut." << endl;

    else
    {
    Zahl[i] = b; i++;
    }
    }

    int key = 10; // die gesuchte Zahl
    // ... hier füllen ...

    int count = 0;
    for(int i = 0; i < 10; i++){
    if (Zahl[i] == key) count++;

    }
    }



  • Jens Friedrich schrieb:

    was hat des mit dem vektor < > auf sich??

    kann ich des auch mim array machen??

    Klar kannst du - aber mit einem vector<> bist du flexibler (schau mal in deinem C++ Buch nach, da gibt's bestimmt eine Erklärung).

    PS: Wie äußert sich denn dieses "funzt immer noch nicht"?



  • ja also die eingabe funktioniert... aber des nit dem zählen noch net... finde aber keinen fehler...

    hab den quelltest ja jetzt hier ma reingeschtellt... vielleicht findet ihr was...



  • Jens Friedrich schrieb:

    ja also die eingabe funktioniert... aber des nit dem zählen noch net... finde aber keinen fehler...

    Was genau funktioniert denn an der Zählung noch nicht? Und warum verwendest du nicht die Standard-Funktionen dafür:

    int ct = std::count(Zahl,Zahl+10,key);
    


  • also ich will aus 10 Zahlen jeweils wissen wie oft eine zahl vorkommt...

    BSP:
    10,10,10,11,11,12,12,13,17,12
    10 = 3mal
    11 = 2mal
    12 = 3mal
    13 = 1mal
    17 = 1mal

    aber bei mir springt er immer nach der eingabe aus dem programm...

    was mach ich falsch??



  • Wenn du mehrere Werte zählen willst, mußt du das in einer eigenen Schleife erledigen:

    do
    {
      cin>>key;
      if(key>0)
      {
        int ct = count(...);
        cout<<key<<" kommt "<<ct<<" mal vor."<<endl;
      }
    }
    while(key>0);
    


  • key ist in dem fall die zahl von der ich wissen will wie oft sie vorkommt??



  • Jens Friedrich schrieb:

    key ist in dem fall die zahl von der ich wissen will wie oft sie vorkommt??

    Ja, aber das war sie doch schon in deinem letzten Code.



  • kann mir jemand sagen wo hier noch ein fehler steckt wenn ich auflisten will wie oft jede eingegeben Zahl vorkommt...
    #include <iostream>
    using namespace std;

    int main (void)
    {
    int Zahl[10], i = 0, k, b, key;
    double a;

    while (i<10)
    {
    cout << "Bitte " << i+1 << "te Zahl eingeben" << endl;
    cin >> a;

    b = ((int)a);

    if(a < 10 || a != b)

    cout << "Die eingegebene zahl ist zu klein, versuchen Sie es erneut." << endl;

    else if(a > 20)

    cout << "Die eingegebene Zahl ist zu groß, versuchen Sie es erneut." << endl;

    else if(a !=b)

    cout << "Die eingegebene Zahl ist keine ganze Zahl, versuchen Sie es erneut." << endl;

    else
    {
    Zahl[i] = b; i++;
    }
    }

    do
    {
    cin>>key;
    if(key>0)
    {
    int ct = count(Zahl[i]);
    cout<<key<<" kommt "<<ct<<" mal vor."<<endl;
    }
    }
    while(key>0);
    }



  • #include <map>
    ...
    
    using namespace std;
    
    ...
    
    map<int,int> count;
    for(int i = 0; i < 10; i++){
      count[Zahl[i]]++;
    }
    
    map<int,int>::iterator iter;
    for(iter = count.begin(); iter != count.end(); ++iter){
      cout << iter->first << " kommt " << iter->second << " mal vor" << endl;
    }
    


  • des is doch aber wieder mit vector <> oder??

    muss des aber mim array machen..



  • Wenn du für alle Werte in deinem Zahlenbereich zählen mußt, sieht die Schleife etwas anders aus:

    for(int key=10;key<=20;++key)
    {
      int ct=std::count(Zahl,Zahl+10,key);//oder deine selbstgeschriebene Zählschleife
      if(ct>0) cout<<key<<"-"<<ct<<endl;
    }
    


  • Hier mal eine schnell hingeklatsche "Lösung". Variablennamen absichtlich stumpf gewählt. 😉

    num ist hierbei die Anzahl an Elementen im zu parsenden Array. Zahl das Array mit den Elementen. Fertig.

    for(int i = 0; i < num; i++){
    	int Anz = 1;
    	bool alt = false;
    
    	for(int n = 0; n < i; n++){
    	    if (Zahl[n] == Zahl[i]){
    		alt = true;
    		break;
    	    }
    	}
    	if (alt) continue;
    
    	for(int k = i + 1; k < num; k++){
    	    if (Zahl[k] == Zahl[i]) Anz++;
    	}
    	cout << Zahl[i] << " kommt " << Anz << " mal vor " << endl;
        }
    


  • cool danke... wart echt ne große hilfe...


Anmelden zum Antworten