2016-03-20 11 views
-7

Dort heißt es:Was ist los mit diesem? C++ Array Pointer

[Fehler] ungültige Konvertierung von 'int *' auf 'int' [-fpermissive] in Zeile 9 col 5.

Was von mir verlangt wurde tun:

ein Programm, das Array von 10 ganzen Zahlen und bestimmt die höchsten und die niedrigsten Zahlen aus der Menge der ganzen Zahlen annehmen würde. Verwenden Sie Zeigervariablen für die höchste und die niedrigste Ganzzahl.

, was ich tat:

#include<iostream> 
using namespace std; 
int main() 
{ 
    int kre_arr[10]; 
    int *kre_p; 
    for(int k = 0; k<=10; k++) 
     { 
      kre_p[k] = &kre_arr[k]; 
     } 
    int j,temp; 
    cout<<"Enter 10 Integers: "; 
    for (*kre_p=0; *kre_p < 10; *kre_p++) 
     { 
      cin>>kre_arr[*kre_p]; 
     } 
    for(*kre_p=0;*kre_p<=10;*kre_p++) 
     { 
      for(j=*kre_p+1;j<=10;j++) 
       { 
        if(kre_arr[*kre_p] > kre_arr[j]) 
         { 
          temp = kre_arr[*kre_p]; 
          kre_arr[*kre_p] = kre_arr[j]; 
          kre_arr[j] = temp; 
         } 
       } 
     } 
    for(*kre_p=0;*kre_p<=9;*kre_p++) 
     { 
      cout<<endl<<kre_arr[*kre_p]; 
     } 
} 

Code i vor Zeiger hinzugefügt habe ich nicht scheinen, Zeiger, der viel zu verstehen.

#include<iostream> 
 
using namespace std; 
 
int main() 
 
{ 
 
    int kre_arr[10]; 
 
    int *kre_p; 
 
    int i,j,temp; 
 
    cout<<"Enter 10 Integers: "; 
 
    for (int i=0; i < 10; i++) 
 
\t { 
 
    cin>>kre_arr[i]; 
 
\t } 
 
\t for(i=0;i<=10;i++) 
 
\t { 
 
    for(j=i+1;j<=10;j++) 
 
    { \t 
 
    if(kre_arr[i] > kre_arr[j]) 
 
    { 
 
     temp = kre_arr[i]; 
 
     kre_arr[i] = kre_arr[j]; 
 
     kre_arr[j] = temp; 
 
     } 
 
    } 
 
} 
 
    for(i=0;i<=9;i++) 
 
    { 
 
    cout<<endl<<kre_arr[i]; 
 
    } 
 
     } 
 
\t

+2

diese Hausaufgaben? – Martin

+1

'kre_p [k]' ist eine Ganzzahl, kein Zeiger. Ihr Code ist ziemlich durcheinander, so dass es schwer ist, dem zu folgen, was Sie tun wollen - möchten Sie Ihre Werte mit einem einzigen Zeiger speichern oder ein Array von Zeigern speichern? –

Antwort

0

Blick auf das, was Sie zu tun, werden gebeten, ich denke, man muss nur bestimmen den höchsten und den niedrigsten int in dem Array und Punkt. Sie sortieren das Array, das langsamer ist.

denke ich, es so aussehen sollte:

#include<iostream> 
using namespace std; 
int main() 
{ 
    int kre_arr[10]; 
    int *low; 
    int *high; 

    cout<<"Enter 10 Integers: "; 
    for (int i=0; i < 10; i++) 
    { 
     cin>>kre_arr[i]; 
    } 

    //determine the lowest 
    low=&kre_arr[0]; 
    for(int i=1;i<10;i++) 
    { 
     if(kre_arr[i] < *low) 
     { 
      low=&kre_arr[i]; 
     } 
    } 

    //determine the highest 
    high=&kre_arr[0]; 
    for(int i=1;i<10;i++) 
    { 
     if(kre_arr[i] > *high) 
     { 
      high=&kre_arr[i]; 
     } 
    } 

    cout<<"lowest: "<<*low<<"\nhighest: "<<*high; 
} 
+0

Ich habe nie so darüber nachgedacht, Danke. es sagt, bestimmt nicht absteigend, ich missverstand es, fek mein Leben. –

0

kre_p [k] = & kre_arr [k];

kre_arr ist Array.

kre_arr [k] ist eine ganze Zahl.

& kre_arr [k] ist integer Adresse (ähnlich int *)

kre_p Zeiger ist.

kre_p [k] ist eine ganze Zahl.

Also, als Ergebnis können Sie nicht direkt übergeben int an Int. Ich denke, Sie wollen kre_p + k = & kre_arr [k]

+0

Ohne zumindest den Mangel an Speicherzuweisung zu beheben, scheint 'kre_p + k = & kre_arr [k]' ebenfalls eine schlechte Idee zu sein. –

0

den Zustand des Codes gegeben, ich habe Angst um Ihr Leben ... Also, für Ihre overal Überleben und natürlich in der Hoffnung, dass Sie lernen etwas:

  • Verwenden Sie niemals 'using namespace std'. Es ist schlechte Form.

  • Sie reservieren keinen Speicher für Ihr Array von Zeigern (kre_p). Das wird Ihr Programm zum Absturz bringen.

  • Sie brauchen nicht wirklich benötigen eine Reihe von Zeigern. Ihre Array-Elemente können bequemerweise durch ihren Versatz in der Anordnung bezeichnet werden.

  • Sie tun, was ein bubblesort zu sein scheint, um den niedrigsten und höchsten Wert zu finden. Das ist unglaublich ineffizient und völlig unnötig.

C++ kann so eine nette Sprache sein. Es stört mich, wenn Lehrer zu glauben scheinen, sie sollten es in einer Form unterrichten, die so hässlich wie möglich ist.Bedenken Sie:

#include <algorithm> 
#include <array> 
#include <iostream> 

int main() { 
    std::cout << "Enter 10 Integers: "; 

    std::array<int, 10> kre_arr; 
    for (auto &Val : kre_arr) 
     std::cin >> Val; 

    const int Low = *std::min_element (kre_arr.begin(), kre_arr.end()); 
    const int High = *std::max_element (kre_arr.begin(), kre_arr.end()); 

    // The assignment calls for pointers, so let's not disappoint. 

    const int *LowPtr = &Low; 
    const int *HighPtr = &High; 
} 
+0

Lol, ich weiß, dass ich daran lutsche, aber ty für die Rückmeldung darüber, wie ich am Programmieren bin. –

+0

Hey, alle gemeint in guter Laune! Als ich anfing, war ich scheiße. Zwanzig Jahre des Strebens, besser zu werden, macht einen Unterschied ... Und trotzdem hast du eine Bedrohung für dein Leben erwähnt ;-) –