Войти

Показать полную графическую версию : Неправильно работает код.


pashazt
28-10-2012, 17:36
Неправильно работает код,а иммено та часть где надо найти сумму элементов масива, которые находятся между первым и последним отрицательными числами.
Помогите найти ошибку пожалуйста.
Среда 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;

}

lxa85
28-10-2012, 19:07
pashazt, по всей видимости какая то ошибка с индексами. Где то +- еденица потеряна.
Какие результаты получаются на тестовых наборах
-1 0 1 2 3 4 5 -6
1 2 -1 3 4 5 -6 -7
и др.?

pashazt
28-10-2012, 19:24
Всегда выбивает рандомное число.

lxa85
29-10-2012, 11:53
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;

}




© OSzone.net 2001-2012