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

простые (или не очень)..... - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
Bishop89
0 / 0 / 0
Регистрация: 16.12.2009
Сообщений: 12
20.12.2009, 18:16     простые (или не очень)..... #1
Всем доброго времени суток! Помогите пожалуйста решить вот такие вот задачки:
1) Записать положительные элементы массива X подряд в массив Y. Определить k-количество положительных элементов. Вычислить сумму элементов массива X и произведение элементов Y.
2) Календарь. (При решении задач принять во внимание, что в современном (григорианском) календаре каждый год, номер которого делится на 4, является високосным, за исключением тех номеров, которые делятся на 100 и не делятся на 400.)
Для создания универсального календаря, охватывающего все годы, можно использовать непосредственный подсчет, основанный на том, что 1 января 1 года нашей эры было понедельником.
Ну вот, собственно, задача: Даны натуральные числа n, m ( m ≤ n ). Определить, сколько из чисел n, n+1, ..., m являются номерами високосных годов.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cristaloleg
 Аватар для cristaloleg
148 / 49 / 1
Регистрация: 21.12.2008
Сообщений: 961
20.12.2009, 18:26     простые (или не очень)..... #2
Первое:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void main()
{
    int x[100], y[100];
    int i=0, j=0, k;
    double p=1, S=0;
    for(i; i<100; ++i)
    {
        if(x[i]>0)
        {
            y[j] = x[i];
            ++j;
            S += x[i];
            p = p*y[j];
        }
    }
    k = i;
}
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
20.12.2009, 19:33     простые (или не очень)..... #3
Цитата Сообщение от Bishop89 Посмотреть сообщение
Даны натуральные числа n, m ( m ≤ n ). Определить, сколько из чисел n, n+1, ..., m являются номерами високосных годов.
Цитата Сообщение от Bishop89 Посмотреть сообщение
Для создания универсального календаря, охватывающего все годы, можно использовать непосредственный подсчет, основанный на том, что 1 января 1 года нашей эры было понедельником.
А при чем здесь понедельник? Уточните: натуральное n - что означает это число? Какой-то год? Например: n=1234, m=32. Тогда задача сводится к тому что бы вычислить сколько в промежутке от 1234 года до 1266 года было високосных годов. Так?
Bishop89
0 / 0 / 0
Регистрация: 16.12.2009
Сообщений: 12
20.12.2009, 20:57  [ТС]     простые (или не очень)..... #4
ну да "n" является нашей "альфой" (1 годом нашей эры),а "m"-"омегой "(2010 годом), и как правильно вы подметили нам нужно вычислить сколько в промежутке от 1 г. до 2010 г. было високосных годов.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
20.12.2009, 21:15     простые (или не очень)..... #5
Тогда еще раз.
Цитата Сообщение от Bishop89 Посмотреть сообщение
"n" является нашей "альфой" (1 годом нашей эры)
всегда n - 1 год нашей эры? Или вводится с клавиатуры?

Цитата Сообщение от Bishop89 Посмотреть сообщение
а "m"-"омегой "(2010 годом)
m - тоже всегда является 2010 годом? Или вводится с клавиатуры?
Bishop89
0 / 0 / 0
Регистрация: 16.12.2009
Сообщений: 12
20.12.2009, 21:19  [ТС]     простые (или не очень)..... #6
да, n - 1 год нашей эры и m-2010 есть условия
cristaloleg
 Аватар для cristaloleg
148 / 49 / 1
Регистрация: 21.12.2008
Сообщений: 961
20.12.2009, 21:23     простые (или не очень)..... #7
Может не помогу, но мне кажется такие задачки на форуме часто всплывали!
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
20.12.2009, 21:44     простые (или не очень)..... #8
Тогда по-моему это не сюда. Это простое математическое выражение:
2010/4-2010/100+2010/400
Естественно при делении учитывается только целая часть.
Bishop89
0 / 0 / 0
Регистрация: 16.12.2009
Сообщений: 12
20.12.2009, 22:25  [ТС]     простые (или не очень)..... #9
valeriikozlov вы не понимаете суть задачи....Годы смены столетий, оканчивающиеся на два нуля, в трёх случаях из четырёх не являются високосными. Так, годы 1700, 1800 и 1900 не были високосными, так как они кратны 100 и не кратны 400. Год 2000 — високосный, так как он кратен 400. 2100, 2200 и 2300 — не високосные.Иными словами, год является високосным, если он кратен 4 и при этом не кратен 100, либо кратен 400. Год не является високосным, если он не кратен 4, либо кратен 100 и не кратен 400.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
20.12.2009, 22:44     простые (или не очень)..... #10
valeriikozlov вы не понимаете суть задачи....
Конечно я не понимаю.
2010/4 - это все года которые могли бы быть високосными, если бы не правило:
Цитата Сообщение от Bishop89 Посмотреть сообщение
за исключением тех номеров, которые делятся на 100
Вот мы и уменьшаем 2010/4 на 2010/100 (т.е. вычитаем 20).
Но так как не все которые кратны 100 не являются високосными (кратные 400 являются високосными), а мы их уже вычли. То мы просто добавляем это кол-во: +2010/400.
Если неверите, просчитайте вручную.
Bishop89
0 / 0 / 0
Регистрация: 16.12.2009
Сообщений: 12
20.12.2009, 23:01  [ТС]     простые (или не очень)..... #11
фуххх....valeriikozlov год 2010 является висакосным?)
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
20.12.2009, 23:04     простые (или не очень)..... #12
для меня нет. Как и для большинства жителей этой планеты. А что?
Bishop89
0 / 0 / 0
Регистрация: 16.12.2009
Сообщений: 12
20.12.2009, 23:36  [ТС]     простые (или не очень)..... #13
тогда причем тут
Цитата Сообщение от valeriikozlov Посмотреть сообщение
2010/4 - это все года которые могли бы быть високосными, если бы не правило
!
2008 год висакосный т.к делится на 4...(на 100 и на 400 он не делится) год 1800 делится на 4 вместе с тем и на 100 (но не делится на 400)значит он не висакосный! год 2000 дел. на 4 и на 100 и вместе с тем на 400 значет он висакосный!!! это правило определения висакосных годов!!

Добавлено через 2 минуты
сори*) недопонимание начинаем значит с 2008

Добавлено через 1 минуту
голова уже не работает )
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
21.12.2009, 07:49     простые (или не очень)..... #14
Bishop89, Последняя попытка:
Итак:
да, n - 1 год нашей эры и m-2010 есть условия
- нужно посчитать кол-во високосных лет в промежутке от 1 года до 2010 года.
Високосные года, начинаем с начала: 4 год, 8 год, 12 год и т.д. Например берем 61 год: считаем по мной приведенной формуле: 61/4-61/100+61/400=15-0+0=15. Т.е. в период с 1 года до 61 года было 15 високосных лет.
Идем дальше: 96 високосный год, 100 - не високосный год, 104 високосный год. Считаем по формуле 102 год: 102/4-102/100+102/400=25-1+0=24. Т.е. За одну полную сотню лет получается 24 високосных года (при условии что эта сотня не заканчивается датой кратной 400).
Идем дальше: 202 год считаем: 202/4-202/100+202/400=50-2+0=48
301 год считаем: 301/4-301/100+301/400=75-3+0=72
401 год считаем:401/4-401/100+401/400=100-4+1=97 - вот здесь приведенная формула учитывает, что хоть 400 год и делится на 100, но т.к. он еще делится на 400 то является високосным годом.
И т.д...
Для заданного задания: 2010/4-2010/100+2010/400=502-20+5=487 лет были високосными с 1 года по 2010 год.
Bishop89
0 / 0 / 0
Регистрация: 16.12.2009
Сообщений: 12
21.12.2009, 15:26  [ТС]     простые (или не очень)..... #15
Вы поймите меня, не я составлял эту задачу, в университете выдали и сказали делай, а что и как там, как говорится, твои проблемы. Ну я, как видите, нечего не смог придумать.((
На мой взгляд, результат работы программы должно быть перечисление всех високосных дат в диапазоне от 1 до 2010 ,
естественно начинается так 4
8
12
.
.
.
последний получается 2008
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
21.12.2009, 15:34     простые (или не очень)..... #16
Так Вам просто вывести на экран? Тогда вот:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <conio.h>
#include <iostream.h>
int main()
{
    for(int i=4; i<2010; i+=4)
        if(i%100==0 && i%400!=0);
        else
        {
            cout<<i<<endl;
            getch();
        }
     
return 0;
 
}
Bishop89
0 / 0 / 0
Регистрация: 16.12.2009
Сообщений: 12
21.12.2009, 15:49  [ТС]     простые (или не очень)..... #17
как все оказалось просто)),огромное спасибо valeriikozlov
но только начинает он считатать с 780
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
21.12.2009, 16:19     простые (или не очень)..... #18
Цитата Сообщение от Bishop89 Посмотреть сообщение
но только начинает он считатать с 780
я специально для этого включил getch();
Должно работать так: при запуске появляется только один год, затем нажимаете любую клавишу, появляется второй, третий и т.д.
Bishop89
0 / 0 / 0
Регистрация: 16.12.2009
Сообщений: 12
24.12.2009, 17:55  [ТС]     простые (или не очень)..... #19
Приветствую всех.
Решил не создавать новую тему, ибо вопрос опять же, по календарю.
Вот задачка Даны натуральные числа a1,b1,c1,a2,b2,c2, которые указывают две даты (число, месяц, год). Вычислить количество дней, прошедших между двумя этими датами.

Добавлено через 4 минуты
буду признателен за помощь
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2009, 05:27     простые (или не очень).....
Еще ссылки по теме:

C++ Странная ошибка при компиляции очень очень большой проги ,,boomerang,,

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

Или воспользуйтесь поиском по форуму:
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
25.12.2009, 05:27     простые (или не очень)..... #20
Bishop89, Тогда уточняйте. Нужно ли учитывать високосные года (по тому же принципу) в этом промежутке дат или нет?
Yandex
Объявления
25.12.2009, 05:27     простые (или не очень).....
Ответ Создать тему
Опции темы

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