Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Неправильно работает код. (http://forum.oszone.net/showthread.php?t=245663)

pashazt 28-10-2012 17:36 2013786

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

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

pashazt 28-10-2012 19:24 2013871

Всегда выбивает рандомное число.

lxa85 29-10-2012 11:53 2014208

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.

Время: 22:44.
© OSzone.net 2001-