2017-04-08 3 views
0

Ich muss einen Array-Manipulator mit 6 Funktionen schreiben, die alle in main aufgerufen werden. Ich habe die meisten Funktionen geschrieben, aber die, auf denen ich stecke, ist eine, bei der der Benutzer ein Menü auswählt, um ein Element an einem bestimmten Index hinzuzufügen, und eine andere Funktion, bei der der Benutzer ein Element entfernen möchte. Dies ist der Code, den ich bisher für das Insertelement Funktion habe:Versuchen Sie, einen Wert in ein benutzerinitialisiertes Array einzufügen?

int main() 
// other cases; 
     case 5: 
      cout << "Enter a value to insert: "; 
      cin >> insert; 
      cout << "Enter a position to insert the value in: "; 
      cin >> pos; 
      pos--; 
       if (pos < 0 || pos > size) 
       { 
        cout << "Invalid Index " << endl; 
       } 
       else 
       { 
        size = insertValue(arr, value, pos, size); 
        displayArray(arr, size); 
       } 
      break; 

int insertValue(int arr[], int value, int pos, int size) 

if (size == 10) 
    cout << "Array full" << endl; 
else 
{ 
    int i; 
    for (i = size - 1; i >= pos; --i) { 
     arr[i + 1] = arr[i]; 
    } 
    arr[i] = value; 
} 
cout << endl; 
return size; 

Ich glaube, meine Funktion für das Hinzufügen eines Elements richtig ist, aber wenn ich es mit Array-Werten von 3 4 5 laufen, und dem Programm zu sagen hinzufügen die Nummer 4 bei Index 1, es druckt 3 3 4, und 5 ist aus dem Array weggelassen. Wie kann ich das Programm drucken 3 4 4 5? Vielen Dank für Ihre Hilfe!

+1

Sie müssen nach dem Einfügen die Größe um 1 erhöhen. –

Antwort

1

Sie müssen nach dem Einfügen die Größe um 1 erhöhen.

+0

Vielen Dank für Ihren Vorschlag, es erhöht die Array-Größe, aber jetzt, wenn ich den Code 4 in das Array von 3 4 5 bei Index 1 einfügen, es 3 3 4 5 anstelle von 3 4 4 5 drucken. Weißt du warum der Wert wurde verringert? –

+0

Ich habe den Fehler behoben, aber jetzt, wenn ich es ausführe, druckt es eine sehr lange Zahl oder einen Müllwert, dann 4 4 5. Ist etwas falsch mit meiner Hauptfunktion? –

+0

@SabinaBhuiyan Probieren Sie es noch einmal. –

0

Das Größenproblem sieht so aus, als müssten Sie die Größe nach dem Einfügen erhöhen.

Ich denke, Sie können auch ein anderes Problem in Fall 5 haben. Sie cin eine Variable mit dem Namen 'Einfügen', aber Sie übergeben Ihre Funktion eine Variable mit dem Namen 'Wert'. Ich gehe davon aus, dass "Wert" eine Variable für einen anderen Fall ist und beim Einfügen Probleme verursachen könnte.

~ Viel Glück

+1

@ Joe Ich änderte es in size = insertValue (arr, einfügen, pos, size) ;, aber jetzt, wenn ich es ausführen druckt es 4 4 4 5 statt 3 4 4 5. Irgendwelche Ideen, warum das passiert? –

+0

@SabinaBhuiyan Meine Vermutung ist, dass es mit der Art und Weise zu tun hat, wie Sie Ihren Zähler in insertValue for loop vorkrementieren. Versuch arr [pos] = value; – Joe

+0

Auch wenn ich versuche, dem Array 1 2 3 am Index 1 den Wert 3 hinzuzufügen, druckt es 3 2 2 3. Ich bin sehr verwirrt, irgendwelche Ideen, wie das zu beheben ist ??? Ich habe deinen Vorschlag ausprobiert und es hat nicht funktioniert. –

Verwandte Themen