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

Задача про год - C++

Восстановить пароль Регистрация
 
OrlovEagle
 Аватар для OrlovEagle
6 / 4 / 1
Регистрация: 19.04.2011
Сообщений: 185
07.02.2013, 21:48     Задача про год #1
Есть такая задача. Дано число k (от 1 до 365). присвоить значение n (от 0 до 6) в зависимости от того, на какой день недели приходиться k-тый день года, учитывая то, что 1 января понедельник.

Я сначала подумал что можно сделать через остаток от деления. Но это будет работать до 3 января. Намекните какими способами можно ее сделать.

Добавлено через 12 минут
Например 3 число и все числа с шагом +7 являются средами. Как это можно записать?

Добавлено через 12 минут
C++
1
for(i=1,i<365,i+7){if (k=1+i) {n=0}
вот так прокатит?

называется тихо сам с собою я веду беседу
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2013, 21:48     Задача про год
Посмотрите здесь:

Задача про скобки C++
C++ Задача про синусоиду
Задача про торт C++
C++ Задача про банк
Задача про триугольник C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Algiz
159 / 159 / 13
Регистрация: 23.02.2011
Сообщений: 347
07.02.2013, 21:55     Задача про год #2
C++
1
<день года> % 7
не знаю, как ты там с остатком делил, у меня все работает
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,038
07.02.2013, 21:59     Задача про год #3
Понедельник это 0 или 1

Цитата Сообщение от OrlovEagle Посмотреть сообщение
Я сначала подумал что можно сделать через остаток от деления.
правильно подумал

Цитата Сообщение от OrlovEagle Посмотреть сообщение
Но это будет работать до 3 января.
Это почему еще?

Цитата Сообщение от OrlovEagle Посмотреть сообщение
Добавлено через 12 минут
Цитата Сообщение от OrlovEagle Посмотреть сообщение
называется тихо сам с собою я веду беседу
А ты думал за 12 минут толпа набежит?
OrlovEagle
 Аватар для OrlovEagle
6 / 4 / 1
Регистрация: 19.04.2011
Сообщений: 185
07.02.2013, 22:01  [ТС]     Задача про год #4
Algiz, действительно работает. я просто остатки от 1 до 7 вводил, а надо от 0 до 6.
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,038
07.02.2013, 22:07     Задача про год #5
Цитата Сообщение от OrlovEagle Посмотреть сообщение
я просто остатки от 1 до 7 вводил, а надо от 0 до 6.
Переведи
А лучше код покажи( когда не получалось)
OrlovEagle
 Аватар для OrlovEagle
6 / 4 / 1
Регистрация: 19.04.2011
Сообщений: 185
07.02.2013, 22:16  [ТС]     Задача про год #6
if (i%7==7) {n=7}
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,038
07.02.2013, 22:23     Задача про год #7
Цитата Сообщение от OrlovEagle Посмотреть сообщение
if (i%7==7) {n=7}
ну дак у тебя никогда не выполнится условие
остаток от деления на 7
0 1 2 3 4 5 6(заметил числа что тебе и нужны)
если понедельник это 1
то просто
C++
1
n=i%7;
а если понедельник это 0
то
C++
1
n=(i-1)%7;
OrlovEagle
 Аватар для OrlovEagle
6 / 4 / 1
Регистрация: 19.04.2011
Сообщений: 185
07.02.2013, 22:33  [ТС]     Задача про год #8
ну да, я так и сделал. просто не обратил внимание сначала. остаток от деления на 7 не может быть 7 =)
vla58862892
1 / 1 / 0
Регистрация: 10.02.2012
Сообщений: 6
07.02.2013, 22:43     Задача про год #9
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <string>
#include <fstream>
#include <conio.h>
#include <sstream>
#include <vector>
#include <cmath>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    int mm [31]={31,28,31,30,31,30,31,31,30,31,30,31};
    int m,d;
    int den_ned;
 
    cout << "Vvedite dd: ";
    cin >> d;
    cout << "Vvedite mm: ";
    cin >> m;
    int sum=0;
    for(int i=0;i<m-1;i++)
    {
        sum=sum+mm[i];
        cout << "sum"<<sum<<endl;
    }
    sum=sum+d;
    den_ned=sum%7;
    cout << "sum"<<sum<<endl;
    switch (den_ned)
       {
        case 0: cout << "Monday"   <<endl; break;
        case 1: cout << "Tuesday"  <<endl; break;
        case 2: cout << "Wednesday"<<endl; break;
        case 3: cout << "Thursday" <<endl; break;
        case 4: cout << "Friday"   <<endl; break;
        case 5: cout << "Saturday" <<endl; break;
        case 6: cout << "Sunday   "<<endl; break;
       }
 
    system("pause");
    
}
OrlovEagle
 Аватар для OrlovEagle
6 / 4 / 1
Регистрация: 19.04.2011
Сообщений: 185
07.02.2013, 23:08  [ТС]     Задача про год #10
да, через case самое то.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2013, 15:45     Задача про год
Еще ссылки по теме:

Задача на массивы: Найти самый год, в котором общая сумма продаж фирмы была минимальной за период учета C++
Задача про гостей C++
C++ задача про Перегоны

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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
11.02.2013, 15:45     Задача про год #11
Цитата Сообщение от OrlovEagle Посмотреть сообщение
да, через case самое то.
Самое то скорее через массив:
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
28
29
#include <iostream>
using namespace std;
 
 
int main()
{
    int mm [31]={31,28,31,30,31,30,31,31,30,31,30,31};
    const char *days[] = {"Monday", "Tuesday", "Wednesday", "Thursday",
                          "Friday", "Saturday", "Sunday"};
    int m,d;
    int den_ned;
 
    cout << "Vvedite dd: ";
    cin >> d;
    cout << "Vvedite mm: ";
    cin >> m;
    int sum=0;
    for(int i=0;i<m-1;i++)
    {
        sum=sum+mm[i];
        cout << "sum"<<sum<<endl;
    }
    sum=sum+d;
    den_ned=sum%7;
    cout << "sum"<<sum<<endl;
    cout << days[den_ned] << endl;
    
    return 0;
}
Yandex
Объявления
11.02.2013, 15:45     Задача про год
Ответ Создать тему
Опции темы

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