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

Первый код на С++ - C++

Восстановить пароль Регистрация
 
Leg@
Сообщений: n/a
05.10.2011, 21:13     Первый код на С++ #1
Вечер добрый)
Сразу прошу помидорами не закидывать)
На Вашу критику, оценку мое первое самостоятельное творение в Визуал С++...

Очень интересно какие ошибки и прочее там обнаружатся...


Смысловая нагрузка текста взята просто так, и часть кода - заглушки.
За основу (int main() ) взят первый вопрос теста.
Жду критики и советов) Спасибо)
пы.сы. (синтаксических ошибок найдено не было).


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
// тест
 
#include<iostream>
#include<string>
#include<cstdlib>
using namespace std;
 
 
// 1 вопрос
void    Vopros1();
// 2 вопрос
void    Vopros2();
// 3 вопрос
void    Vopros3();
// 4 вопрос
void    Vopros4();
// 5 вопрос
void    Vopros5();
// 6 вопрос
void    Vopros6();
// 7 вопрос
void    Vopros7();
 
 
 
int main()
{
    system ("chcp 1251 > nul");
    
        // вопрос 1
        
    {
        string answer;
    
    do
        {   //ввод вопроса
            cout << "Вопрос 1: Вы летаете во сне? ";
            getline(cin, answer);  //answer - ответ
        }while(answer != "да" && answer != "нет");
 
    if(answer == "да")
        {
            Vopros2();
        }
    else
        {
            Vopros3();
        }
                
    }
        system ("pause");
}
 
        
        // вопрос 2
        void Vopros2()
    {
        string answer2;
    do
        {
            cout << "2. Это повторяется чаще 2 раз в месяц? ";
            getline(cin, answer2);
        }while(answer2 != "да" && answer2 != "нет");
 
    if(answer2 == "да")
        {
            Vopros4();
        }
    else
        {
            Vopros5();
        }
                
    }
        // вопрос 3
        void Vopros3()
    {
        string answer3;
    do
        {
            cout << "3.У Вас бывают цветные сны? ";
            getline(cin, answer3);
        }while(answer3 != "да" && answer3 != "нет");
    
    if(answer3 == "да")
        {
            Vopros6();
        }
    else
        {
            Vopros7();
        }
    }
 
        // вопрос 4
        void Vopros4()
        {
        cout << "Вопрос 4. " << endl;
        }
        // вопрос 5
        void Vopros5()
        {
        cout << "Вопрос 5. " << endl;
        }
        // вопрос 6
        void Vopros6()
        {
        cout << "Вопрос 6. " << endl;
        }
        // вопрос 7
        void Vopros7()
        {
        cout << "Вопрос 7. " << endl;
        }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
KeyGen
 Аватар для KeyGen
333 / 289 / 6
Регистрация: 07.08.2011
Сообщений: 789
Записей в блоге: 1
06.10.2011, 01:33     Первый код на С++ #2
Мне кажется что функции тут лишние:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 1 вопрос
void    Vopros1();
// 2 вопрос
void    Vopros2();
// 3 вопрос
void    Vopros3();
// 4 вопрос
void    Vopros4();
// 5 вопрос
void    Vopros5();
// 6 вопрос
void    Vopros6();
// 7 вопрос
void    Vopros7();
Я бы столько не стал делать...
x1Mike7x
 Аватар для x1Mike7x
214 / 127 / 6
Регистрация: 06.11.2010
Сообщений: 234
06.10.2011, 02:06     Первый код на С++ #3
Эта куча однообразных функций-вопросов не очень-то и нужна.
Можно сделать, например, так: создаём 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
#include <iostream>
#include <string>
 
std::string Vopros( unsigned X )
{
    std::string S[] = { "Вопрос 1: Вы летаете во сне?",
                              "2. Это повторяется чаще 2 раз в месяц?",
                              "3.У Вас бывают цветные сны?" };
    std::string answer;
    do
    {
         std::cout << S[X - 1] << std::endl;
         std::getline(std::cin, answer3);
    } while( answer != "да" && answer != "нет" );
    return answer;
}
 
int main()
{
    std::string ans, ans_next;
 
    ans = Vopros( 1 );
    if ( ans == "да" )
         ans_next = Vopros( 2 );
    else
         ans_next = Vopros( 3 );
 
    return 0;
}
Leg@
Сообщений: n/a
06.10.2011, 14:25     Первый код на С++ #4
Цитата Сообщение от x1Mike7x Посмотреть сообщение
Эта куча однообразных функций-вопросов не очень-то и нужна.
Можно сделать, например, так: создаём 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
#include <iostream>
#include <string>
 
std::string Vopros( unsigned X )
{
    std::string S[] = { "Вопрос 1: Вы летаете во сне?",
                              "2. Это повторяется чаще 2 раз в месяц?",
                              "3.У Вас бывают цветные сны?" };
    std::string answer;
    do
    {
         std::cout << S[X - 1] << std::endl;
         std::getline(std::cin, answer3);
    } while( answer != "да" && answer != "нет" );
    return answer;
}
 
int main()
{
    std::string ans, ans_next;
 
    ans = Vopros( 1 );
    if ( ans == "да" )
         ans_next = Vopros( 2 );
    else
         ans_next = Vopros( 3 );
 
    return 0;
}

Подскажите, а как быть тогда с последующими вопросами: 2 и 3 также разбиваются на "да/нет"... и так далее...?
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
06.10.2011, 14:27     Первый код на С++ #5
Leg@, нажми меня

вот и функции, и вопросы
x1Mike7x
 Аватар для x1Mike7x
214 / 127 / 6
Регистрация: 06.11.2010
Сообщений: 234
06.10.2011, 17:56     Первый код на С++ #6
Цитата Сообщение от Leg@ Посмотреть сообщение
Подскажите, а как быть тогда с последующими вопросами: 2 и 3 также разбиваются на "да/нет"... и так далее...?
Можно вот-так ( при этом если нам не важны предыдущие ответы, то можно обойтись 1 переменной ans ) :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main()
{
    std::string ans;
    int k = 1;
 
    ans = Vopros( k );
    while ( k < *Количество вопросов* ) 
    {
        if ( ans == "да" )
            k = 2 * k; 
        else
            k = 2 * k + 1;
        ans = Vopros( k );
    }
 
    return 0;
}
При этом стоит учитывать заполнение массива вопросов в функции "Vopros()" поярусно - т.е. именно так, как у Вас в приведенном коде.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2011, 21:03     Первый код на С++
Еще ссылки по теме:

Релизация очереди (первый пришел первый ушел) в классе C++
C++ напишите код пожалуйста.(первый курс)
Почему функция putchar(); выводит только первый символ?(Короткий код) C++

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

Или воспользуйтесь поиском по форуму:
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
06.10.2011, 21:03     Первый код на С++ #7
Простенький концепт.
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
#include <string>
#include <iostream>
#include <vector>
 
class Answers {
 public:
  Answers() : choices_() {}
  Answers &addChoice(const std::string &choice) {
    choices_.push_back(choice);
    return *this;
  }
  std::string &operator[](size_t id) { return choices_[id]; }
  size_t size() { return choices_.size(); }
 private:
  std::vector<std::string>choices_;
};
 
class Question {
 public:
  explicit Question(const std::string &question, const Answers &answers,
    size_t correctAnswer)
    : question_(question), answers_(answers),
    correctAnswer_(correctAnswer), selectedAnswer_(0) {}
  int ask() {
    std::cout << question_ << std::endl;
    for (size_t i = 0; i < answers_.size(); ++i)
      std::cout << i << ": " << answers_[i] << std::endl;
    std::cout << "Enter answer: ";
    std::cin >> selectedAnswer_;
    return selectedAnswer_;
  }
 private:
  std::string question_;
  Answers answers_;
  size_t correctAnswer_;
  size_t selectedAnswer_;
};
 
int main(int argc, char *argv[]) {
  std::cout << Question("What is a frog?", Answers()
    .addChoice("An animal").addChoice("An insect")
    .addChoice("A flower"), 1).ask();
  return 0;
}
Yandex
Объявления
06.10.2011, 21:03     Первый код на С++
Ответ Создать тему
Опции темы

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