mit welchen eingaben...



  • 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