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

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

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

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

20.12.2009, 18:16. Просмотров 1754. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос простые (или не очень)..... (C++):

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

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

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

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

Найти все трехзначные простые числа. Определить функцию позволяющую распознавать простые числа - C++
Найти все трехзначные простые числа. Определить функцию позволяющую распознавать простые числа. Простые числа это когда они делятся только...

Задача про простые числа. Выпишите все простые числа, находящиеся в интервале между а и б - C++
#include <stdio.h> #include <iostream> #include <conio.h> #include <math.h> using std::cout; using std::cin; using...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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++
4670 / 2496 / 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++
4670 / 2496 / 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++
4670 / 2496 / 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++
4670 / 2496 / 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++
4670 / 2496 / 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++
4670 / 2496 / 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.12.2009, 15:26
Привет! Вот еще темы с ответами:

Странная ошибка при компиляции очень очень большой проги ,,boomerang,, - C++
Я в общем, даже и не представляю, куда смотреть в поисках ошибки. Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ...

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

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.12.2009, 15:26
Ответ Создать тему
Опции темы

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