mit welchen eingaben...



  • 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