2017-04-04 4 views
-1

Start des Programms Sie müssen eingeben, wie viele Elemente Sie möchten, zum Beispiel wenn ausgewählt 3 Sie können ein b c eingeben, aber wenn Sie mehr als 3 Elemente eingeben, bricht das Programm sofort ab. Haben Sie nicht herausgefunden, wie Sie vorgehen, wenn Sie mehr als 4 Elemente eingeben a b c d es wird nur den a b c Teil lesen.Array-Probleme eingeben

#pragma hdrstop 
#pragma argsused 

#include <string> 
#include <tchar.h> 
#include <conio.h> 
#include <stdio.h> 
#include <math.h> 
#include <iostream.h> 
#include <iomanip> 
#include <sstream> 


int main() { 
    char teikums[100]; // Masiva lielums 
    int c, i, count, patsk; // Patskani 
    char yesno; // Atkartosanas Mainigais 
    do { 
     system("cls"); // Notira Ekranu 
     patsk = 0; // Pieskir vertibu 
     cout << "Ievadi Massiva lielumu 1-100: "; 
     cin >> count; 
     if (count > 100 || count < 1) { 
      cout << "Massivs nedriklst but lielaks par 100 vai mazaks par 0"; 
     } 
     else { 
      cout << "Ievadi " << count << " burtus vienu pa vienam\n"; 
      for (i = 1; i <= count; i++) { 

       cin >> teikums[i]; 
      } 
      cout << "\nIzmantotie Patskani:"; 
      for (i = 0; teikums[i] != '\0'; i = i + 2) { 
       if (teikums[i] == 'a' || teikums[i] == 'e' || 
        teikums[i] == 'o' || teikums[i] == 'o' || 
        teikums[i] == 'u' || teikums[i] == 'A' || 
        teikums[i] == 'E' || teikums[i] == 'I' || 
        teikums[i] == 'O' || teikums[i] == 'U') { 
        ++patsk; 

        cout << teikums[i]; 

       } 

      } 

      cout << "\nPatskanu Skaits: " << patsk; 
     } 
     cout << ("\nVai velaties atkartot(Y/cits):"); 
     // prasa lietotajam vai velas atkartot 
     cin >> yesno; 
     if (yesno == 'y' || yesno == 'Y') { 
     } 
     else { 
      return 0; 
     } 
    } 
    while (tolower(yesno) != 'n'); 
    getch(); 
} 
+0

'für (i = 1; i <= count; i ++)' und 'für (i = 0; teikums [i]! = '\ 0'; i = i + 2)' stimmt nicht überein. Auch scheint es, dass es nicht abstürzen wird, selbst wenn das Programm entgegen dem erwarteten Verhalten endet. – BLUEPIXY

+0

einer von 'teikums [i] == 'o'' ->' teikums [i] ==' i'' – BLUEPIXY

+0

'#include ' -> '#include ' – BLUEPIXY

Antwort

0

Ihr Programm wird nicht so verhalten, wie Sie es erwarten, wenn Sie in mehr Zahlen als Ihre count eingeben, weil, wie es die Eingaben wird das Parsen.

for (i = 1; i <= count; i++) { 

    cin >> teikums[i]; 
} 

Lassen Sie uns sagen, dass Ihre count 1 ist, und geben Sie in 1 2. Dies wird einmal Schleife und sagen teikum[1], 1 zu sein, und 2 ist immer noch übrig, darauf warten, von einem Eingabestrom ergriffen werden. Darunter Sie haben,

cin >> yesno; 

die jetzt yesno gesetzt wird 2 und Ihr Programm, weil 2 != 'n' wird beendet zu sein. Sie müssen entweder die Daten korrekt eingeben, wie Ihr Format erwartet oder löschen Sie cin mit etwas wie cin.ignore('\n'), die die aktuelle Zeile der Eingabe ignoriert.

Ferner Sie Ihre i bei 1 beginnen und gehen bis zu zählen, aber das Array ist nur Größe 100. Wenn Zahl 100 ist, wird es versuchen, zuzugreifen teikum[100] die außerhalb der Grenzen sein wird als Array von 0 geht - 99