 |
|
Неправильно работает код.
Неправильно работает код,а иммено та часть где надо найти сумму элементов масива, которые находятся между первым и последним отрицательными числами.
Помогите найти ошибку пожалуйста.
Среда Dev-C++
Код:
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<locale.h>
main()
{
setlocale (LC_ALL, "Rus");
int N,i,s,first,last,M;
int x[100];
printf("Введите количество элементов масива N=");
scanf("%d",&N);
s=0;
printf("Введите масив элементов s: ");
for(i=1; i<=N; i++)
scanf("%d",&x[i]);
//Сума элементов масива с непарными элементами
for(i=1; i<=N; i++)
if (x[i] % 2!=0)
s=s+x[i];
printf("Сума непарных елементов масива = %d\n",s);
//Сума элементов масива, которые находятся между первым и последним отрицательнымb числами
for(i=1; i<=N; i++) if (x[i]<0) {i=first;break;}
for(i=N; i>=first; i--) if (x[i]<0) {i=last;break;}
printf("first=%d\n",first);
printf("last=%d\n",last);
int sum=0;
for(i=first+1; i<last; i++)
sum+=x[i];
printf("Сума элементов масива, которые находятся между первым и последним отрицательными числами = %d\n",sum);
getch();
return 0;
}
|
pashazt, по всей видимости какая то ошибка с индексами. Где то +- еденица потеряна.
Какие результаты получаются на тестовых наборах
-1 0 1 2 3 4 5 -6
1 2 -1 3 4 5 -6 -7
и др.?
|
Всегда выбивает рандомное число.
|
pashazt, надо инициализировать переменные!
first, last не определены. Первое.
Второе и самое важное -- не происходит их присвоение в циклах.
i=first => first=i !
отлаженный код
Код:
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<locale.h>
main()
{
setlocale (LC_ALL, "Rus");
int N,i,s,first,last,M;
int x[100];
printf(" N=");
scanf("%d",&N);
printf("%d", N);
s=0;
//printf(" s: ");
for(i=1; i<=(N); i++)
scanf("%d",&x[i]);
printf(" Massive N ");
for(i=1; i<=(N); i++){
s=x[i];
printf("%d",i," ","%d",s);
}
for(i=1; i<=N; i++)
if (x[i] % 2!=0)
s=s+x[i];
printf(" = %d\n",s);
first=1;
last=1;
for(i=1; i<=N; i++) if (x[i]<0) {first=i;printf("\n first=%d\n",first);break;}
for(i=N; i>=first; i--) if (x[i]<0) {last=i;printf("\n last=%d\n",last);break;}
printf("first=%d\n",first);
printf("last=%d\n",last);
int sum=0;
for(i=first+1; i<last; i++)
sum+=x[i];
printf(" = %d\n",sum);
getch();
return 0;
}
|
Время: 22:44.
© OSzone.net 2001-