2016-05-04 6 views
-3

Ich mache jetzt ein Projekt mit C-Sprache und ich habe ein Problem in einem Teil auf Projekt.Basisch versuche ich, maximale M-Nummern in meinem Haupt-Array zu finden und ich nehme ihre ID-Nummern zu einem anderen Array. Die ID-Nummern dieser Max-Nummern sind ihre Position in Array.Maximale Anzahl im Array mit Zeigern finden und ihre Position zu einem anderen Array nehmen

Meine Haupt-Array ist tresh_arr und haben N-Nummern, die Zahlen sind doppelt.

Mein Code Block, der nicht der Fall funktioniert:

double max=0; 
    int *max_arr; 
    int k,tmp,flag=0; 
    max_arr=calloc(M,sizeof(int)); 



for(i=0;i<M;i++) //I will find maximum M numbers 
{ 
    for(j=0;j<N;j++) //There is a N numbers in my array 
    { 
     if(*(tresh_arr+j) > max ) //I'm trying to take the Id numbers to the tresh_arr 
      { 
       flag=0; 
       for(k=0;k<i+1;k++) 
       { 
        if(*(max_arr+k)==j) 
        { 
         flag=0; 
         break; 
        } 
        else 
         flag=1; 
       } 

       if(flag==1) 
       { 
        max = *(tresh_arr+j); 
        tmp=j; 
       }        
      } 
    } 
    *(max_arr+i)=tmp; 
}` 

Aber mein Code funktioniert nicht und die maximale Anzahl nur zu finden und M-mal die Id dieser maximalen number.What Schreiben soll ich tun? Danke und Entschuldigung für meine Fehler wenn.

+0

Debugger ................. –

+0

Was ist, wenn Sie das Array sortieren und das Maximum M nehmen? – Marievi

Antwort

0

Im Folgenden sind Fehler in Ihrem Programm:

1) In vorletzter Linie sollten Sie * (max_arr tun + i) = max; // nicht tmp

2) In jedem forloop über i bis mindestens gesetzt maximale Anzahl

for(i=0;i<M;i++) //I will find maximum M numbers 

{

max =-1; //**********YOU MISSED THIS***************** 

for(j=0;j<N;j++) //There is a N numbers in my array 
{ 

3) Vor Bruch Sie Flag auf 1 und keine Notwendigkeit gesetzt sollte eingestellt es auf 0 wieder und in, wenn Sie für Flag == 0 überprüfen sollte, was bedeutet, Element wurde nicht gefunden

Auch es ist gut um * (A + j) als A [j] in C zu schreiben, sie sind beide genau gleich, früher ist es eine Art zu ausführlich

+0

* (max_arr + i) = tmp, weil ich die Position der Höchstzahl nehme, ist es nicht selbst. Und ich habe versucht, meinen Code zu ändern, wie Sie gezeigt haben, aber es funktioniert immer noch nicht.Auch danke für Schreibvorschlag. – Alperen

+0

Dann diesen Vergleich ändern if (* (max_arr + k) == tresh_arr [j]) // tresh_arr [j] von j –

+0

https://gist.github.com/coderabhishek/42bb47c5b4cbb29afd7d62f0dc78e89e Sehen Sie hier, Ihr Code arbeitend –

Verwandte Themen