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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
Bishop89
0 / 0 / 0
Регистрация: 16.12.2009
Сообщений: 12
#1

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

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

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

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

Простые числа, или как это работает? - C++
Доброго времени суток всем участникам этого форума =) У меня как у начинающего программиста возникла затрудняющая ситуация, есть готовый...

Разбить число на множители и определить простые они или нет - C++
Нужна помощь народ! Надо написать код чтобы работал по такому принципу: разбить число на множители и определить простые они или нет, если...

очень очень странная ошибка - C++
вообщем стоит Windows 8.1 стоит visual studio 2008 возникла проблема: когда пытаюсь скомпилировать прогу - возникает 1 ошибка: ...

Я очень сильно запустил свой ПК,посоветуйте что нибудь т.к. очень сильно тормозит - C++
Сильно запустил свой ПК,при включении приходится ждать около часа чтобы не лагал так сильно,при переустановке Windows лагает также

простые - C++
Требуется найти колличество простых чисел до 10000. А потом определить является ли число этих чисел (звучит то как)))) простым. В чем...

Простые сомножители - C++
Привет всем тут такой вопрос: Задача сосит в следуюшел Простые сомножители. Любое натуральное число может быть единственным образом...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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++
4669 / 2495 / 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++
4669 / 2495 / 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
148 / 49 / 1
Регистрация: 21.12.2008
Сообщений: 961
20.12.2009, 21:23     простые (или не очень)..... #7
Может не помогу, но мне кажется такие задачки на форуме часто всплывали!
valeriikozlov
Эксперт C++
4669 / 2495 / 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++
4669 / 2495 / 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++
4669 / 2495 / 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++
4669 / 2495 / 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++
4669 / 2495 / 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++
4669 / 2495 / 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++
Помогите решить задачу! бьюсь над ней несколько часов...:wall: Найти разность квадрата суммы и суммы квадратов всех простых чисел от 1...

Простые циклы с++ - C++
Ребят, помогите прогу написать по заданию, пожалуйста.

Простые делители - C++
Требуется написать программу которая находит сумму простых делителей числа n

Простые числа - C++
Помогите сделать так, чтобы в этой программе не считал все четные числа(2,4,6,8...), а просто пропускал их. #define SIZE 32767 //вводит...

Простые числа - C++
Проверить является ли введеное число простым или нет. Запрещено создавать темы с бессмысленными названиями вроде &quot;Помогите!&quot;, &quot;Вопрос&quot; и...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru