Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2012, 22:21   #1
Yakoff
Пользователь
 
Регистрация: 28.05.2011
Сообщений: 21
По умолчанию

Дано целое число N ( N > 2) и набор из N целых чисел, содержащий по крайней мере 2 нуля. Вывести сумму чисел данного набора, расположенных между последними двумя нулями (если последние нули идут подряд, то сумма равна 0).

Код:
#include<stdio.h>
 
int main(void)
{   
    int N;
    int Sum;
    int Zero1;
    int Zero2;
    int i;
    int *A;
    printf("%s\n","Enter N:");
    scanf("%d",&N);
    A=malloc(N*sizeof(int));
    for(i=0;i<N;i++)
    {
        printf("%s%d%s\n","Enter A[",i,"]:");
        scanf("%d",&A[i]);
    }
    Zero1=-1;
    Zero2=-1;
    i=N-1;
    while((i>-1)&&(Zero2==-1))
    {
        if(A[i]==0)
        {
            if(Zero1==-1) Zero1=i;
            else Zero2=i;
        }
        i--;
    }
    Sum=0;
    for(i=Zero2;i<Zero1+1;i++) Sum=Sum+A[i];
    printf("%s%d","Sum=",Sum,"\n");
    free(A);
    return 0;
}
Есть программа. Но тут вбит массив. Как ее обработать так, чтобы они работала именно с последовательностью, а не с массивом?

Последний раз редактировалось Stilet; 12.11.2012 в 18:56.
Yakoff вне форума Ответить с цитированием
Старый 12.11.2012, 07:02   #2
Sergey_14
 
Регистрация: 12.11.2012
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Yakoff Посмотреть сообщение
Дано целое число N ( N > 2) и набор из N целых чисел, содержащий по крайней мере 2 нуля. Вывести сумму чисел данного набора, расположенных между последними двумя нулями (если последние нули идут подряд, то сумма равна 0).
Извини, а какие значения могут принимать числа в последовательности (отриц., полож.)?
Sergey_14 вне форума Ответить с цитированием
Старый 12.11.2012, 15:02   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

С потолка:
Код:
#include<stdio.h>
 
int main(void)
{   
    int N;
    int Sum=0;
    int Zero1;
    int Zero2;
    int i;
    int *A;
    printf("%s\n","Enter N:");
    scanf("%d",&N);
    A=malloc(N*sizeof(int));
    for(i=0;i<N;i++)
    {
        printf("%s%d%s\n","Enter A[",i,"]:");
        scanf("%d",&A[i]);
    }

    for(i=n-1;i>=0 && A[i];i--);
    for(i=n-1;i>=0 && !A[i];i--) Sum+=A[i];

    printf("%s%d","Sum=",Sum,"\n");
    free(A);
    return 0;
}
Подходит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.11.2012, 15:03   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Abstraction
Эм... Это не мне реплика? Или у меня ошибка?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.11.2012, 15:59   #5
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Эм... Это не мне реплика? Или у меня ошибка?
Это чудеса связи, Вашего поста на момент отправки своего я не видел.
Но у меня есть лёгкое подозрение, что ТС нужно решение, работающее в предположении, что 4N байт непрерывным куском программе не дадут. Формулировка задания не отличается ясностью, увы.
Abstraction вне форума Ответить с цитированием
Старый 12.11.2012, 15:59   #6
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Эм... Это не мне реплика? Или у меня ошибка?
Это чудеса связи, Вашего поста на момент отправки своего (который почему-то помечен временем 18:57) я не видел.
Но у меня есть лёгкое подозрение, что ТС нужно решение, работающее в предположении, что 4N байт непрерывным куском программе не дадут. Формулировка задания не отличается ясностью, увы.
Abstraction вне форума Ответить с цитированием
Старый 12.11.2012, 18:57   #7
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

1) Удалить первый цикл;
2) Развернуть второй цикл в прямом направлении (с учётом ситуации, когда нулей больше двух);
3) Вместо A[i] иметь одну переменную A, вместо i-- читать в неё очередное значение.
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
найти сумму элементов массива,расположенных между первым и вторым отрицательными элементами Кристюша5 Паскаль, Turbo Pascal, PascalABC.NET 0 26.05.2012 16:06
Вычислить сумму элементов массива, расположенных между первым и последним положительными элементами Fitch573 Помощь студентам 4 09.01.2012 18:04
Вставка нулей в массив. Сумма элементов между нулями. Язык С++ annka93 Помощь студентам 1 30.10.2011 19:50
Найти сумму чисел последовательности, расположенных между максимальным отрицательным и минимальным положи Maks6169 Помощь студентам 6 02.12.2009 10:38
Не считает сумму между нулями nark25 Общие вопросы C/C++ 6 19.04.2009 19:02