2017-01-25 8 views
1

Beachten Sie den folgenden Code. Ich möchte den Betrag durch den Wert des letzten Elements im Array teilen. Ich habe es auf die folgende Weise versucht, aber es funktioniert nicht. Kann mir jemand sagen, wie man das richtig macht?Wie erhält man den Wert des letzten Elements eines Arrays?

#include<stdio.h> 
int main() 
{ 
    int i, j, k, noteNumber, array[100], amount, result; 

    printf("Enter the number of the notes: \n"); 
    scanf("%d", &noteNumber); 

    printf("Enter the value of %d notes: \n", noteNumber); 
    for(i = 0; i < noteNumber; i++){ 
     scanf("%d", &array[i]); 
    } 

    printf("Enter the amount: \n"); 
    scanf("%d", &amount); 

    i = j; 

     if(amount/array[j] == 0){ 
     printf("Minimum %d number of is needed", (amount/array[j])); 
     printf("The value of each note is %d", array[j]); 
    } 

} 
+0

'Menge/array [noteNumber-1]' – George

+0

definieren "es funktioniert nicht". Erhalten Sie eine andere Ausgabe als Sie erwarten? Wenn ja, dann sind die von Ihnen angegebene Eingabe, die von Ihnen erwartete Ausgabe und die Ausgabe, die Sie tatsächlich erhalten, sinnvolle Ergänzungen zu Ihrer Frage. –

+0

Letztes Element wird Array [noteNumber - 1] sein. Es wäre hilfreich, wenn Sie das Problem klarer definieren und uns sagen, was in Ihrer Lösung "nicht funktioniert". –

Antwort

1

Sie sind mit einer Linie

i = j; 

j nicht einmal initialisiert wird, so dass Sie hier einen Fehler machst, vielleicht was Sie wollte, war

j = i - 1 

Als i würde noteNumber in erhöht haben Ihre for Schleife und Array mit der Anzahl der Elemente n hat letzten Elementindex n-1, weil Index vonbeginntstatt 1.

So Proper Code wäre

#include<stdio.h> 
int main(){ 

int i, j, k, noteNumber, array[100], amount, result; 

printf("Enter the number of the notes: \n"); 
scanf("%d", &noteNumber); 

printf("Enter the value of %d notes: \n", noteNumber); 
for(i = 0; i < noteNumber; i++){ 
    scanf("%d", &array[i]); 
} 

printf("Enter the amount: \n"); 
scanf("%d", &amount); 

j = i - 1; // Line Changed 

    if(amount/array[j] == 0){ 
    printf("Minimum %d number of is needed", (amount/array[j])); 
    printf("The value of each note is %d", array[j]); 
} 

} 
+0

Ich verstehe jetzt. Du hast mein Problem gelöst. Danke :) –

+0

@RubelHosen Vielen Dank, ich war nur ein Anfänger wie du, und ich bin immer noch, also verstehe ich verschiedene Probleme, die wir beim Start durchlaufen. Bitte lesen Sie das Buch C Programmierung eines modernen Ansatz 2 Ausgabe, es ist sehr schön Buch oder Sie könnten http://StackOverflow.com/Questions/562303/the-definitive-c-book-guide-and-list –

+0

@RubelHosen And überprüfen Sie können diese [Videos] (http://nptel.ac.in/courses/106104128/) auch ansehen, um C Sprache zu verstehen. –

2

Wenn noteNumber ist die Größe des Arrays, dann das letzte Element sein wird

array[noteNumber - 1] 

Soweit ich sehen kann, ist j nicht einmal initialisiert?

3

Wie ich sehen kann

i = j; 

falsch ist, wie Sie den Wert einer nicht initialisierten Variablen verwenden zu einem anderen zu übertragen. Dies ergibt keinen Sinn und kann zu undefined behavior führen.

C-Arrays verwenden 0-basierte Indizierung. Bei einem Array der Größe n wäre der letzte Index n-1.

Das gesagt, verwenden Sie nie einen ungebundenen Index für ein statisch definiertes Array, führen Sie immer die gebundene Überprüfung vor dem Verwenden des Indexes.

Verwandte Themen