2016-10-27 1 views
-3

Dies ist der Code, den ich bisher habe:Wie finde ich die maximale Häufigkeit einer Zahl einer ganzen Zahl?

#include <iostream> 

    #define MAX(X,Y) ((X) > (Y) ? (X):(Y)) 

    int frequency(int n); 

    int main() 
    { 
     int x; 

     std::cout << "Please enter a sequence of numbers." 
      << std::endl; 
       std::cin >> x; 

     std::cout << "The max frequency of " << x << " is " 
       << frequency(x) 
       << std::endl; 

     return 0; 
    } 

    int frequency(int n) 
    { 
     int A[10] = {0}, rem; 

     while (n != 0) 
     { 
      int rem = (n % 10); 
      A[rem] += 1; 
      n = (n/10); 
      std::cout << rem << '\t' << n 
       << std::endl; 
     } 
     //MAX(A[rem], n); 
    } 

Wie kann ich das ändern, so dass es das druckt die Ziffer, die die meisten Vorkommen in einer ganzen Zahl von einem Benutzer festgelegt hat?

+2

Sie scannen das Array und finden den größten Wert, dann drucken Sie den entsprechenden Index. Und das riecht sehr stark nach "Hausaufgaben" ... also ... mach es selbst. –

+0

@Aleksandar das ist richtig. Aber für den Fall, dass ich eine Zahl wie 122355 eingeben möchte, muss ich 2 und 5 vergleichen und dann gebe ich das Maximum dieser beiden Werte an. Das ist irgendwie, wo ich ratlos bin ... –

+0

@theinternethobo das ist etwas Neues, danke, dass du uns informiert hast – Slava

Antwort

1

Halten Sie einfach den Überblick über den Maximalwert in der Schleife:

int A[10] = {}; 
    int max = 0; 
    while (n != 0) 
    { 
     int rem = n % 10; 
     ++A[rem]; 
     n /= 10; 
     if(max == rem or A[max] > A[rem]) 
      continue; 
     if(A[rem] > A[max] or rem > max) 
      max = rem; 
    } 
    return max; 

Hinweis Sie eine andere rem erstellen zusammen mit Array, das Sie besser entfernen Sie es, wie Sie es nicht verwenden.

Hinweis 2: es ist nichts falsch mit:

A[rem] += 1; 
n = (n/10); 

kann es kurz in C++ einfach ausgedrückt werden, wie es in meinem Code gezeigt.

+0

Danke @Slava! Ich weiß, es scheint wie ein einfaches Programm zu schreiben, aber ich bin irgendwie neu in C++ und ich finde es schwierig, meine Ideen in physisches Programm zu verwandeln. –

+1

@theinternethobo Stift und Papier, Mann. Verwandeln Sie Ihre Ideen in eine Liste von Dingen, die erledigt werden müssen, transformieren Sie die Liste in einen geordneten Ablauf dessen, was wann getan werden muss, und wandeln Sie dann den Fluss in Code um. Selbst wenn sich herausstellt, dass Sie in Schritt 3 nicht gut sind, gibt es Unmengen von Leuten, die in Schritt 1 und 2 sind und saugen. Finden Sie Ihre Nische und füllen Sie sie aus. – user4581301

+0

@ user4581301 Danke für den Tipp Mann! Ich werde sicher sein, das für jetzt zu tun. –

Verwandte Themen