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

Разбитие кода на отдельные части - C++

Восстановить пароль Регистрация
 
Surges
1 / 1 / 0
Регистрация: 04.06.2013
Сообщений: 42
02.11.2013, 10:14     Разбитие кода на отдельные части #1
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
#include <iostream>
#include <conio.h>
#include <ctime>
 
    int sec(0);
    int minu(0);
    int chas(0);
    int B = 1;
    int sok;
 
void how2timer(int ms) {
    int CLOCKS_PER_MSEC = CLOCKS_PER_SEC / 1000;   // новая константа
    clock_t end_time = clock() + ms * CLOCKS_PER_MSEC ;  // время завершения
    while (clock() < end_time) {}  // цикл ожидания времени
}
 
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    
    cout << "\n\t\t\t***Таймер выключения компьютера***\n\n\t\t\t\t\t\t\t\tversion 0.2";
    cout << "\n\n\n\n\t\tПомощь:\n1 час   = 60 минут.\n2 часа  = 120 минут.\n3 часа  = 180 минут.\n4 часа  = 240 минут.\n5 часов = 300 минут.\n6 часов = 360 минут.\n7 часов = 420 минут.\n8 часов = 480 минут.";
    cout << "\n\n\tТаймер на сколько минут? : ";
    cin >> minu;
    system("cls");
    cout << "\n\n\tПробный режим? Или обычный? (1 or 2): ";
    while (!(cin >> sok) || sok >= 3 || sok <= 0)
    {
        cin.clear();
        while(cin.get() != '\n');
        system("color c0");
        cout << "\t\nЭто таймер, а не зрелище на смерть консоли. Введите заноdо Ваш выбор. ";
        how2timer(2000);
        system("color 7");
        cout << "\n\n\tПробный режим? Или обычный? (1 or 2): ";
    }
    getch();
    return 0;
}
int vibor1()
{
    main();
    if (sok == 2)
    {
    for(unsigned long long i = 0; i < 1000000000000; i++)
    {
      if (sec == 0)
      {
          minu -= 1;
          sec = 60;
      }
      how2timer(1000);
      system("cls");
      sec -=1;
         if(minu >= 60)
         {
             chas += 1;
             minu -= 60;
         }
         if(minu >= 120)
         {
             chas += 2;
             minu -=120;
         }
         if(minu >= 180)
         {
             chas += 3;
             minu -= 180;
         }
         if(minu >= 240)
         {
             chas += 4;
             minu -= 240;
         }
         if(minu >= 300)
         {
             chas += 5;
             minu -= 300;
         }
         if(minu >= 360)
         {
             chas += 6;
             minu -= 360;
         }
         if(minu >= 420)
         {
             chas += 7;
             minu -= 420;
         }
         if(minu >= 480)
         {
             chas += 8;
             minu -= 480;
         }
 
      
      cout << "\n\n\n\n\n\n\n\n\t\t\t\t" << chas << ":" << min << ":" << sec;
      if (sec == 0)
    {
        if(minu == 0)
        {
            if (chas == 0)
            {
        system("color c");
        system("shutdown -s -t 10");
        cout << "\n\n\n\t\tВНИМАНИЕ!\n\n\t\tКомпьютер выключится через 10 секунд.";
        cout << "\n\n\n\t\tЕсли хотите предотвратить это, нажмите 1 : ";
        int bok;
        cin >> bok;
        if (bok == 1)
        {
            system("color f");
            system("shutdown -a");
            cout << "\n\n\n\n\tВыключение компьютера отменено.";
            break;
        }
        how2timer(11000);
      }}}
    }
    }
    return chas, minu, sec;
}
int vibor2()
{
    main();
    if(sok == 1)
    {
    for(unsigned long long i = 0; i < 10000000000; i++)
    {
      if (sec == 0)
      {
          minu -= 1;
          sec = 60;
      }
      how2timer(50);
      system("cls");
      sec -=1;
    
         if(minu >= 60)
         {
             chas += 1;
             minu -= 60;
         }
         if(minu >= 120)
         {
             chas += 2;
             minu -=120;
         }
         if(minu >= 180)
         {
             chas += 3;
             minu -= 180;
         }
         if(minu >= 240)
         {
             chas += 4;
             minu -= 240;
         }
         if(minu >= 300)
         {
             chas += 5;
             minu -= 300;
         }
         if(minu >= 360)
         {
             chas += 6;
             minu -= 360;
         }
         if(minu >= 420)
         {
             chas += 7;
             minu-= 420;
         }
         if(minu >= 480)
         {
             chas += 8;
             minu -= 480;
         }
       if (sec == 0)
    {
        if (minu == 0)
        {
            if (chas == 0)
            {
                {
        system("color a"); 
        cout << "\n\n\n\t\tСейчас выключился бы компьютер. )))00)";
        cout << "\n\n\t\tНо увы, это проба.\n\n\n  В обычном режиме, ты бы мог отменить выключение. На это там дается 10 секунд.";
        break;
                }
    }
    }}
      cout << "\n\n\n\n\n\n\n\n\t\t\t\t" << chas << ":" << min << ":" << sec;
    }
      }
    return chas, minu, sec;
}
Пройдя новый урок, я решил попробовать разбить этот весомый код на 3 части, чтобы было удобно редактировать, но увы, когда я разбил, и указал в main на эти две страницы vibor1() и vibor2(), то он (компилятор) мне выдал ошибку на 12 страниц.(http://screenshot.su/show.php?img=32...2532c6c43b.jpg) Тогда я сделал наоборот, в выбор1() и выбор2() засунул майн, но тоже не прокатило. Добавил return, и тоже не помогло.
Помогите разобраться, в чем ошибки?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11846 / 6825 / 771
Регистрация: 27.09.2012
Сообщений: 16,920
Записей в блоге: 2
Завершенные тесты: 1
02.11.2013, 10:19     Разбитие кода на отдельные части #2
а кто учил вызывать main?
C++
1
2
3
int vibor1()
{
    main();
Surges
1 / 1 / 0
Регистрация: 04.06.2013
Сообщений: 42
02.11.2013, 10:21  [ТС]     Разбитие кода на отдельные части #3
Цитата Сообщение от Croessmah Посмотреть сообщение
а кто учил вызывать main?
C++
1
2
3
int vibor1()
{
    main();
Так никто не учил, поэтому я перебирал все возможные варианты
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11846 / 6825 / 771
Регистрация: 27.09.2012
Сообщений: 16,920
Записей в блоге: 2
Завершенные тесты: 1
02.11.2013, 10:22     Разбитие кода на отдельные части #4
А смысл этой строчки Вы понимаете?
C++
1
    return chas, minu, sec;
Добавлено через 1 минуту
переменной min нет
C++
1
cout << "\n\n\n\n\n\n\n\n\t\t\t\t" << chas << ":" << min << ":" << sec;
ValeryS
Модератор
6378 / 4844 / 442
Регистрация: 14.02.2011
Сообщений: 16,066
02.11.2013, 10:35     Разбитие кода на отдельные части #5
Цитата Сообщение от Surges Посмотреть сообщение
Так никто не учил, поэтому я перебирал все возможные варианты
а если бы было 100 функций ты бы тоже все варианты пробовал?
int main() это главная функция она всегда одна в программе
и никто вызывать её не должен, её вызывает система для начала работы программы( об экзотике, типа рекурсивного вызова, я не говорю)
Surges
1 / 1 / 0
Регистрация: 04.06.2013
Сообщений: 42
02.11.2013, 10:43  [ТС]     Разбитие кода на отдельные части #6
Цитата Сообщение от Croessmah Посмотреть сообщение
А смысл этой строчки Вы понимаете?
C++
1
    return chas, minu, sec;
Добавлено через 1 минуту
переменной min нет
C++
1
cout << "\n\n\n\n\n\n\n\n\t\t\t\t" << chas << ":" << min << ":" << sec;
Переменную исправил. (12 страниц ошибок сдулись как ветер)
Разве return chas, minu, sec это не "завершать работу vibor2() сохраняя эти переменные" ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2013, 10:49     Разбитие кода на отдельные части
Еще ссылки по теме:

Формирование двоичного кода для целой и дробной части + вывод в файл C++
C++ Как проверить работоспособность участка кода без остальной части программы?
C++ Какие части шелл кода однозначно говорят что атака по переполнению буфера началась?

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6378 / 4844 / 442
Регистрация: 14.02.2011
Сообщений: 16,066
02.11.2013, 10:49     Разбитие кода на отдельные части #7
Цитата Сообщение от Surges Посмотреть сообщение
Разве return chas, minu, sec это не "завершать работу vibor2() сохраняя эти переменные" ?
нет
сам подумай кто где их сохранять будет
return возврат из функции
return chas функция завершается и возвращает значение chas главной программе, вернуть она может только одно значение

для того чтобы функция вернула значение нужно явно это указать в описании перед именем функции
например
C++
1
int MyFunc();
функция MyFunc после завершения вернет вызывающей программе значения int
А все что происходит внутри функции, расчеты, переменные, это её внутреннее дело, никто не знает что там происходит
и при завершении работы функции все эти внутренние переменные забываются
Yandex
Объявления
02.11.2013, 10:49     Разбитие кода на отдельные части
Ответ Создать тему
Опции темы

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