0 / 0 / 0
Регистрация: 16.12.2009
Сообщений: 12
1

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

20.12.2009, 18:16. Показов 2501. Ответов 25
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток! Помогите пожалуйста решить вот такие вот задачки:
1) Записать положительные элементы массива X подряд в массив Y. Определить k-количество положительных элементов. Вычислить сумму элементов массива X и произведение элементов Y.
2) Календарь. (При решении задач принять во внимание, что в современном (григорианском) календаре каждый год, номер которого делится на 4, является високосным, за исключением тех номеров, которые делятся на 100 и не делятся на 400.)
Для создания универсального календаря, охватывающего все годы, можно использовать непосредственный подсчет, основанный на том, что 1 января 1 года нашей эры было понедельником.
Ну вот, собственно, задача: Даны натуральные числа n, m ( m ≤ n ). Определить, сколько из чисел n, n+1, ..., m являются номерами високосных годов.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2009, 18:16
Ответы с готовыми решениями:

Как научиться создавать на C++ простые приложения (очень простые игры)?
Помогите, я хочу научится создавать какието для начала очень простые игры, приложения. но я вооще...

Очень большие простые числа
По причине своей неопытности, не знаю как решить данную задачу. Задача по теме длинная арифметика...

Вывести простые числа от a до n (while или for)
Подскажите пожалуйста, как реализовать вывод на экран всех простых чисел от a до n при помощи цикла...

Простые числа, или как это работает?
Доброго времени суток всем участникам этого форума =) У меня как у начинающего программиста...

25
149 / 50 / 3
Регистрация: 21.12.2008
Сообщений: 960
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;
}
2
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
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 года было високосных годов. Так?
0
0 / 0 / 0
Регистрация: 16.12.2009
Сообщений: 12
20.12.2009, 20:57  [ТС] 4
ну да "n" является нашей "альфой" (1 годом нашей эры),а "m"-"омегой "(2010 годом), и как правильно вы подметили нам нужно вычислить сколько в промежутке от 1 г. до 2010 г. было високосных годов.
0
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
20.12.2009, 21:15 5
Тогда еще раз.
Цитата Сообщение от Bishop89 Посмотреть сообщение
"n" является нашей "альфой" (1 годом нашей эры)
всегда n - 1 год нашей эры? Или вводится с клавиатуры?

Цитата Сообщение от Bishop89 Посмотреть сообщение
а "m"-"омегой "(2010 годом)
m - тоже всегда является 2010 годом? Или вводится с клавиатуры?
0
0 / 0 / 0
Регистрация: 16.12.2009
Сообщений: 12
20.12.2009, 21:19  [ТС] 6
да, n - 1 год нашей эры и m-2010 есть условия
0
149 / 50 / 3
Регистрация: 21.12.2008
Сообщений: 960
20.12.2009, 21:23 7
Может не помогу, но мне кажется такие задачки на форуме часто всплывали!
0
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
20.12.2009, 21:44 8
Тогда по-моему это не сюда. Это простое математическое выражение:
2010/4-2010/100+2010/400
Естественно при делении учитывается только целая часть.
0
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.
0
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
20.12.2009, 22:44 10
valeriikozlov вы не понимаете суть задачи....
Конечно я не понимаю.
2010/4 - это все года которые могли бы быть високосными, если бы не правило:
Цитата Сообщение от Bishop89 Посмотреть сообщение
за исключением тех номеров, которые делятся на 100
Вот мы и уменьшаем 2010/4 на 2010/100 (т.е. вычитаем 20).
Но так как не все которые кратны 100 не являются високосными (кратные 400 являются високосными), а мы их уже вычли. То мы просто добавляем это кол-во: +2010/400.
Если неверите, просчитайте вручную.
0
0 / 0 / 0
Регистрация: 16.12.2009
Сообщений: 12
20.12.2009, 23:01  [ТС] 11
фуххх....valeriikozlov год 2010 является висакосным?)
0
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
20.12.2009, 23:04 12
для меня нет. Как и для большинства жителей этой планеты. А что?
0
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 минуту
голова уже не работает )
0
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
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 год.
0
0 / 0 / 0
Регистрация: 16.12.2009
Сообщений: 12
21.12.2009, 15:26  [ТС] 15
Вы поймите меня, не я составлял эту задачу, в университете выдали и сказали делай, а что и как там, как говорится, твои проблемы. Ну я, как видите, нечего не смог придумать.((
На мой взгляд, результат работы программы должно быть перечисление всех високосных дат в диапазоне от 1 до 2010 ,
естественно начинается так 4
8
12
.
.
.
последний получается 2008
0
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
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;
 
}
1
0 / 0 / 0
Регистрация: 16.12.2009
Сообщений: 12
21.12.2009, 15:49  [ТС] 17
как все оказалось просто)),огромное спасибо valeriikozlov
но только начинает он считатать с 780
0
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
21.12.2009, 16:19 18
Цитата Сообщение от Bishop89 Посмотреть сообщение
но только начинает он считатать с 780
я специально для этого включил getch();
Должно работать так: при запуске появляется только один год, затем нажимаете любую клавишу, появляется второй, третий и т.д.
0
0 / 0 / 0
Регистрация: 16.12.2009
Сообщений: 12
24.12.2009, 17:55  [ТС] 19
Приветствую всех.
Решил не создавать новую тему, ибо вопрос опять же, по календарю.
Вот задачка Даны натуральные числа a1,b1,c1,a2,b2,c2, которые указывают две даты (число, месяц, год). Вычислить количество дней, прошедших между двумя этими датами.

Добавлено через 4 минуты
буду признателен за помощь
0
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
25.12.2009, 05:27 20
Bishop89, Тогда уточняйте. Нужно ли учитывать високосные года (по тому же принципу) в этом промежутке дат или нет?
0
25.12.2009, 05:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2009, 05:27
Помогаю со студенческими работами здесь

проверка простые числа или не простые
Составить программу для проверки утверждения: «результатами вычислений по формуле x2+x+17 при...

Простые числа и не очень
Меня интересует Алгоритм, который мог бы выдавать, не обязательно в порядке возрастания, простые...

3 очень простые задачи
помогите 3 задачи для начинающих: 1. просто два поля, Логин и пароль. 2. массивы + дата....

Очень простые часы на PIC-контроллере
Напряжение питания: 5 V Конфигурационное слово для контроллера находится внутри файла прошивки...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru