2017-01-25 1 views
1

다음 코드를 준수하십시오. 그 양을 배열의 마지막 요소 값으로 나누고 싶습니다. 다음과 같은 방법으로 시도했지만 작동하지 않습니다. 아무도 그것을 할 수있는 적절한 방법이 무엇인지 말해 줄 수 있습니까? noteNumber 만약배열의 마지막 요소 값을 얻는 방법은 무엇입니까?

#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

'양/배열 [noteNumber-1]' – George

+0

는 "이 작동하지 않습니다"정의된다. 예상보다 다른 출력을 얻습니까? 그렇다면 입력 한 내용, 예상 한 결과 및 실제로 얻은 결과가 질문에 대한 추가 사항입니다. –

+0

마지막 요소는 배열 [noteNumber - 1]이됩니다. 문제를보다 명확하게 정의하고 솔루션에서 "작동하지 않는"것이 무엇인지 알려주는 것이 도움이 될 것입니다. –

답변

1

당신은 당신이 실수를하고되도록

i = j; 

j도 초기화되지 않은 라인을 가지고있다, 어쩌면 어떤 당신이 원하는 것은 i으로

j = i - 1 

가에 noteNumber로 증가했을 것이었다 요소 수가 nfor 루프 및 배열의 ​​인덱스는부터 시작하므로 마지막 요소 인덱스는 n-1입니다.오히려 1보다

그래서 적절한 코드

#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

이제 알겠습니다. 당신은 내 문제를 해결했습니다. 고마워요 :) –

+0

@RubelHosen 고마워요, 저는 당신처럼 초보자였습니다. 그리고 저는 여전히 그렇습니다. 그래서 우리는 시작할 때 여러 가지 문제를 이해합니다. 제발 책 C 프로그래밍 현대 접근법 2 판, 아주 좋은 책 또는 체크 수 있습니다 http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list –

+0

@RubelHosen 그리고 또한 C 언어를 이해하기 위해 [비디오] (http://nptel.ac.in/courses/106104128/)를 볼 수 있습니다. –

2

배열의 크기가 후, 마지막 요소가 될 것입니다

array[noteNumber - 1] 

최대한 멀리 볼 수있는, j도 초기화되지 않는 이유는 무엇입니까?

3

난 당신이 다른 할당 할 초기화되지 않은 변수의 값을 사용하고 같은

i = j; 

이 잘못 볼 수 있듯이. 이는 의미가 없으며 undefined behavior으로 이어질 수 있습니다.

C 배열은 0부터 시작하는 인덱싱을 사용하므로 크기가 n 인 배열의 경우 마지막 인덱스는 n-1이됩니다.

즉, 정적으로 정의 된 배열에 대해 언 바운드 인덱스를 사용하지 말고 항상 인덱스를 사용하기 전에 바운드 검사를 수행하십시오.

관련 문제