Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
 Аватар для AHTOH33
0 / 0 / 0
Регистрация: 12.05.2017
Сообщений: 20

Можно ли вручную вызвать метод main()

11.07.2017, 18:08. Показов 4277. Ответов 23
Метки main (Все метки)

Студворк — интернет-сервис помощи студентам
у меня в книге по C++ написано, что метод main() является зарезервированным системой и что его невозможно вызвать вручнуюкак обычную функцию, но тем не менее код представленный ниже прекрасно компилируется и корректно работает, стандарт использую C++11, этот же стандарт является последним на момент написания книги, код представлен ниже
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
#include <iostream>
#include <ctime>
#include <cstdlib>
 
bool checknum(int, char *);
bool checkwin(char *, char *);
int checkrightpos(char *, char *, int);
int checkrightdig(char *, char *, int);
bool checkinvalidinput(char *, int);
void setpause(float i);
 
bool first = true;
 
int main()
{
    std::srand(time(NULL));
    const int numsize = 5;
    char *number, *answer, *testanswer;
    int *rightdig, *rightpos, *attempts;
    number = new char[numsize];
    attempts = new int;
    for(int i = 0; i < numsize; i++){
        do
            number[i] = std::rand() % 10 + 48;
        while(i != 0 && checknum(i, number));
    }
    number[numsize - 1] = '\0';
    if(first)
        std::cout << "Hello, welcome to the Logic Game!\n";
    first = false;
    std::cout << "Number has generated.\nYou have 10 attempts, start!" << std::endl;
    std::cout << "Enter the number: ";
    rightdig = new int;
    rightpos = new int;
    answer = new char[numsize];
    testanswer = new char[100];
    *attempts = 10;
    while(std::cin.getline(testanswer,100)){
        for(int i = 0; i < numsize - 1; i++)
            answer[i] = testanswer[i];
        answer[numsize - 1] = '\0';
        if(checkinvalidinput(answer, numsize - 1)){
            std::cout << "Invalid input! Enter again: ";
            continue;
        }
        if(*attempts == 1)
            break;
        else
            (*attempts)--;
        if(checkwin(answer, number))
            break;
        *rightdig = checkrightdig(answer, number, numsize - 1);
        *rightpos = checkrightpos(answer, number, numsize - 1);
        std::cout << "You number is\t   " << answer <<". ";
        std::cout << *rightdig << " right numbers," << *rightpos << " in right position.\n";
        std::cout << *attempts << " attempts.\n";
        std::cout << "Enter again: ";
        continue;
    }
    if(*attempts == 1)
        std::cout << "You Lose! Right number is " << number << "!\n";
    else
        std::cout << "You won for " << 10 - *attempts << " attempts!" << std::endl;
    std::cout << "Wanna play again?(y/n): ";
    delete [] number;
    delete rightdig;
    delete rightpos;
    delete [] answer;
    delete [] testanswer;
    delete attempts;
    answer = new char[100];
    while(std::cin.getline(answer,100) && answer[0] != 'n' && answer[0] != 'N'){
        switch (answer[0]){
        case 'Y':
        case 'y':
            main();. dspdfn
        default:
            std::cout << "Incorrect input, enter again: ";
            continue;
        }
    }
    delete [] answer;
    std::cout << "Okay, bye!";
    setpause(1);
    return 0;
}
 
bool checknum(int j, char *num){
    bool outbool = false;
    for(int i = j - 1; i >= 0; i--){
        if(num[i] == num[j]){
            outbool = true;
            break;
        }
    }
    return outbool;
}
 
bool checkwin(char *answer, char *right){
    bool outbool = true;
    for(int i = 0; answer[i] != '\0'; i++){
        if(answer[i] != right[i])
            outbool = false;
    }
    return outbool;
}
 
bool checkinvalidinput(char *input, int inputsize){
    bool outbool = false;
    if(sizeof(input) > inputsize)
        outbool = true;
    else
        for(int i = 0; i < inputsize; i++)
            if(!isdigit(input[i])){
                outbool = true;
                break;
            }
    for(int i = 1; i < inputsize; i++){
        for(int j = i - 1; j < i; j++)
            if(input[j] == input[i]){
                outbool = true;
                break;
            }
        if(outbool)
            break;
    }
    return outbool;
}
 
int checkrightdig(char *answer, char *right, int numsize){
    int rightnums = 0;
    for(int i = numsize - 1; i >= 0; i--)
        for(int j = numsize - 1; j >= 0; j--)
            if(answer[i] == right[j]){
                rightnums++;
                break;
            }
    return rightnums;
}
 
int checkrightpos(char *answer, char *right, int numsize){
    int rightnums = 0;
    for(int i = 0; i < numsize; i++)
        if(answer[i] == right[i])
            rightnums++;
    return rightnums;
}
 
void setpause(float i){
clock_t sec = i * CLOCKS_PER_SEC;
clock_t secpause = clock();
while(clock() - secpause < sec);
}
Добавлено через 9 минут
Там строчка где main() символов нет после точки с запятой, это я слуцайно набил и не заметил уже на сайте.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.07.2017, 18:08
Ответы с готовыми решениями:

Можно ли из программы вызвать метод main()?
Прошу помощи! Ситуация следующая: я разрабатываю на Java под Android, в C не очень разбираюсь. Есть библиотека FFmpeg для работы с видео....

Как вызвать метод info в метод Main и с какими параметрами?
я новичок в C#, так что не судите строго.. Я не думаю что это кому-то покажется сложным, но у меня вызывает дикий ступор(( using...

Метод main и как им вызвать другой метод
Доброго всем времени суток. У меня возникла проблема. Вобщем дело такое. У меня есть тестовый класс Test, в котором существует 4 метода:...

23
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,829
12.07.2017, 08:49
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от AHTOH33 Посмотреть сообщение
Забавно, Я не настолько глуп, чтобы не знать с каким языком работаю
Имелось в виду, что диалект GNU++, который применяется по умолчанию в GCC, не является С++ в полной мере.

Из официальной документации: https://gcc.gnu.org/onlinedocs/gcc/Standards.html
By default, GCC also provides some additional extensions to the C++ language that on rare occasions conflict with the C++ standard. See Options Controlling C++ Dialect. Use of the -std options listed above disables these extensions where they they conflict with the C++ standard version selected. You may also select an extended version of the C++ language explicitly with -std=gnu++98 (for C++98 with GNU extensions), or -std=gnu++11 (for C++11 with GNU extensions), or -std=gnu++14 (for C++14 with GNU extensions), or -std=gnu++1z (for C++1z with GNU extensions).

The default, if no C++ language dialect options are given, is -std=gnu++14.
3
 Аватар для AHTOH33
0 / 0 / 0
Регистрация: 12.05.2017
Сообщений: 20
12.07.2017, 17:14  [ТС]
Если так, то понятно, спасибо за уточнение, но насколько я знаю у меня стоит -std=c++11
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13212 / 6845 / 1825
Регистрация: 18.10.2014
Сообщений: 17,325
12.07.2017, 18:40
Цитата Сообщение от AHTOH33 Посмотреть сообщение
но насколько я знаю у меня стоит -std=c++11
Этого мало. Для того, чтобы заставить GCC выдавать (или стараться выдавать) требуемые спецификацией языка диагностические сообщения нужно еще как минимум указать -pedantic.
0
 Аватар для AHTOH33
0 / 0 / 0
Регистрация: 12.05.2017
Сообщений: 20
13.07.2017, 07:43  [ТС]
TheCalligrapher, спасибо, уже понял, и, как писал выше, уже указал это, и теперь программа не компилируется
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.07.2017, 07:43

Как вызвать метод в main()
Помогите решить задачу, а то из универа выгонят. Не могу понять, как в мэйне вызвать эту функцию class Program { ...

Reflection. Как вызвать конструктор и метод в Main'e?
Доброго всем времени суток. уже 2ой пытаюсь разобраться с reflection, перечитал кучу инфы, пересмотрел много примеров, но так и не смог...

Как вызвать в Main метод из другого класса?
Задачка на среднее арифметическое. Создал класс &quot;Array&quot;, в котором происходит заполнение массива числами, затем числа из массива и...

Из main вызвать две задачи, при этом сразу вернуть управление в main
Не нашел нигде.. гугл не помог (отчасти только). Вопрос такой, есть консольное приложение. Код main static void Main() { ...

Можно ли переименовать метод Main?
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru