2017-05-11 5 views
0

Erhalte eine Aufgabe, um meinen Code in dynamisches Array zu ändern. Das Programm fordert Sie auf, die Array-Größe 1 bis 100 einzugeben. Danach werden die Vokale 1 zu 1 mit den normalen Array-Teikums [100] eingegeben; es gab die Vokale und die Vokalmenge aus. Wurde eine Aufgabe gegeben, dynamisches Array ohne das "neue" zu machen. aber nach der Zugabe von dynamischen Arrays:Leere Antworten dynamisches Array

char *teikums = (char*)malloc(100); 

Es gibt Leerzeichen.

#pragma hdrstop 
#pragma argsused 

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

using namespace std; 

int main() { 
    char *teikums = (char*)malloc(100); 
    int c, i, count, patsk; // Patskani 
    char yesno; // Atkartosanas Mainigais 

    do { 
    cout << " " << teikums[i]; 
    system("cls"); // Notira Ekranu 
    do { 
     patsk = 0; // Pieskir vertibu 
     cout << "Input array size 1-100: "; 
     cin >> count; 
     if (count > 100 || count < 1) { 
     cout << "Array cant be lower or higher than 0\n"; 

     } 
    } while (count > 100 || count < 1); 
    do { 
     cout << "Input " << count << "letters one by one\n"; 
     for (i = 1; i <= count; i++) { 

     cin >> teikums[i]; 
     if (!((teikums[i] >= 'a' && teikums[i] <= 'z') || (teikums[i] >= 
      'A' && teikums[i] <= 'Z'))) { 

      cout << "Error! Only input letters\n"; 
      i = i - 1; 

     } 
     } 
    } while (i <= count); 
    cout << "\nUsed Vowels:"; 
    for (i = 0; teikums[i] != '\0'; i = i + 2) { 
     if (teikums[i] == 'a' || teikums[i] == 'e' || teikums[i] == 'i' || 
     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]; 
     teikums[i] = 0; 
     } 

    } 

    cout << "\nVowel ammount: " << patsk; 

    cout << ("\nDo you wish to continue(Y/Else):"); 

    // prasa lietotajam vai velas atkartot 
    cin >> yesno; 
    if (yesno == 'y' || yesno == 'Y') { 

    } 
    else { 
     return 0; 
    } 
    } while (tolower(yesno) != 'n'); 
    getch(); 
} 
+0

Lügen Sie nicht, 'cout' ist nicht' C'. :) –

+0

Sorry, dass könnte nicht die C++ - Tag – AlexA

+0

Denken Sie an den Rand Fall von '100' und sehen Sie dies' für (i = 1; i <= count; i ++) ' –

Antwort

0

In dieser Zeile:

cout << " " << teikums[i]; 

i nicht initialisiert und daher enthält es einen unbestimmten Wert.

Dies verursacht all Ihre Probleme. Aber es könnte andere Probleme geben, ich habe nicht alle Details überprüft.

Wenn es mit char teikums[100]; arbeitete, ist es reiner Zufall.

Google "C undefined Verhalten" für weitere Informationen.

+1

:) Die tatsächliche Antwort sollte sein" höre auf Compiler-Warnungen. " –