Форум программистов, компьютерный форум CyberForum.ru

Циклические алгоритмы - C++

Восстановить пароль Регистрация
 
Mogul-kan
23 / 23 / 2
Регистрация: 24.04.2010
Сообщений: 220
09.10.2010, 22:11     Циклические алгоритмы #1
Здраствуйте, необходимо решить такую задачу:
Известны сведения о количестве осадков, выпавших за каждый день мая. Первого мая осадков не было. Определить, в течение какого количества первых дней месяца непрерывно, начиная с первого мая, осадков не было.
Т.е как обьяснил преподаватель пользователь вводит за каждый день осадки и как только встречается несколько дней где осалдков не было вывести их. Подскажите как это можно написать(преп сказал -масиивы использовать не разрешается)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2010, 22:11     Циклические алгоритмы
Посмотрите здесь:

С++ (циклические алгоритмы) C++
C++ Циклические алгоритмы.
Циклические алгоритмы C++
C++ Циклические алгоритмы
C++ Циклические алгоритмы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Slimmy
 Аватар для Slimmy
65 / 18 / 2
Регистрация: 09.10.2010
Сообщений: 97
09.10.2010, 22:16     Циклические алгоритмы #2
Мы писали что то на подобии того. Если на Си, то нужно через структуру. Но это в ConAp.
Mogul-kan
23 / 23 / 2
Регистрация: 24.04.2010
Сообщений: 220
10.10.2010, 10:18  [ТС]     Циклические алгоритмы #3
да мне нужно на си... можно поподробней обьяснить? а то я не мысленно не могу представить как это делать... Предполагаю взять оператор цикла for внутри вложить оператор if чтобы он проверял есть ли осадки или нет, а вот как проверить последовательность что несколько дней осадков не было?

Добавлено через 11 часов 58 минут
Подскажите хотя бы приблизительно как там нужно сделать
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
10.10.2010, 10:58     Циклические алгоритмы #4
Да как-нибудь вот так сделайте. При вводе ноля считается, что осадков не было.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
 
#define DAYS 5
 
main()
{
    int i = 0;
    int rain = 0;
    int flag = 0;
    int cnt = 0;
    
    for(i = 1; i < DAYS; ++i) {
        printf("%d day: ", i + 1);
        scanf("%d", &rain);
        
        if(!rain && !flag)
            ++cnt;
        
        else
            flag = 1;
    }
    
    printf("days without rain: %d\n", cnt);
}
Mogul-kan
23 / 23 / 2
Регистрация: 24.04.2010
Сообщений: 220
10.10.2010, 11:21  [ТС]     Циклические алгоритмы #5
fasked, спасибо но программа работает не совсем корректно Суть программы в том-как только встречается несколько дней где осадков не было вывести их, остальные дни без осадков выводить не надо... Допустим:
1-1
2-0
3-0
4-1
5-0
Ответ количество дней равно двум это так преподователь обьяснилО_о
ну первый день однозначно без осадков- по условию

Добавлено через 11 минут
всмысле если во втрой день поставить единичку программа уже не работает
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
10.10.2010, 11:27     Циклические алгоритмы #6
Цитата Сообщение от Mogul-kan Посмотреть сообщение
Определить, в течение какого количества первых дней месяца непрерывно, начиная с первого мая, осадков не было.
Простите, но условие "начиная с первого мая" мой мозг отказывается воспринимать по-другому. Я же и привел пример, как посчитать сколько дней начиная с первого мая непрерывно не было осадков.
Цитата Сообщение от Mogul-kan Посмотреть сообщение
Допустим:
1-1
2-0
3-0
4-1
5-0
В этом пример уже во второй день (2-го мая) появляются осадки, значит непрерывность нарушена.
Mogul-kan
23 / 23 / 2
Регистрация: 24.04.2010
Сообщений: 220
10.10.2010, 11:43  [ТС]     Циклические алгоритмы #7
fasked, Спасибо вам огромное у меня еще один вопрос- правильно ли я разобрался как оно работает?

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
#include<conio.h>
#define DAYS 7 \\библиотека для работы с днями
 
main()
{
    int i = 0;
    int rain = 0;
    int flag = 0;
    int cnt = 0;
    
    for(i = 1; i < DAYS; ++i)         \\ если i<дня, то прибавляем единичку и выполняем тело цикла
     {                                \\ начало тела цикла
        printf("%d day: ", i + 1);    \\вывести i+1
        scanf("%d", &rain);           \\присвоить это число переменной rain
        
        if(!rain && !flag)            \\ если  (что то???) не равно rain и не равно flag, 
       
            ++cnt;                    \\ то cnt+1
        
        else
            flag = 1;                 \\ иначе flag равен 1
    }                                 \\ конец тели цикла
    
    printf("days without rain: %d\n", cnt); \\вывести cnt
    getch();
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2010, 12:21     Циклические алгоритмы
Еще ссылки по теме:

Циклические Алгоритмы C++
C++ Циклические алгоритмы
Циклические алгоритмы C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
10.10.2010, 12:21     Циклические алгоритмы #8
Цитата Сообщение от Mogul-kan Посмотреть сообщение
правильно ли я разобрался как оно работает?
Цитата Сообщение от Mogul-kan Посмотреть сообщение
#define DAYS 7
Этой константой я обозначил количество дней, для которых будет произведен ввод осадков. (Если для всего месяца мая, то ставьте здесь 31)
Цитата Сообщение от Mogul-kan Посмотреть сообщение
if(!rain && !flag)
А это значит следующее: если rain равен 0 и flag равен 0.
Блок else сработает, если хотя бы одна из переменных (rain или flag) не будет равна 0.
Yandex
Объявления
10.10.2010, 12:21     Циклические алгоритмы
Ответ Создать тему
Опции темы

Текущее время: 19:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru