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

How to do this? Array of strings - C++

Восстановить пароль Регистрация
 
Shushan
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 5
22.04.2014, 01:47     How to do this? Array of strings #1
1.George Washington (1789-1797)
2.John Adams (1797-1801)
3.Thomas Jefferson (1801-1809)
4.James Madison (1809-1817)
5.James Monroe (1817-1825)
6.John Quincy Adams (1825-1829)
7.Andrew Jackson (1829-1837)
8.Martin Van Buren (1837-1841)
9.William H. Harrison (1841)
10.John Tyler (1841-1845)

*The following is a sample execution of the program:

Enter the order number for each of the following presidents:
James Monroe (1817-1825): 4
Wrong! Try again: 3
Wrong! Try again: 5
Right!
John Adams (1797-1801): 2
Right!
Thomas Jefferson (1801-1809): 6
Wrong! Try again: 7
Wrong! Try again: 8
Wrong! The correct answer is 3
John Tyler (1841-1845): 10
Right!
Andrew Jackson (1829-1837): 7
Right!
John Tyler (1841-1845): 10
Right!
John Adams (1797-1801): 2
Right!
James Monroe (1817-1825): 5
Right!
Martin Van Buren (1837-1841): 7
Wrong! Try again: 9
Wrong! Try again: 8
Right!
George Washington (1789-1797): 1
Right!
You answered 9 of 10 correctly.
Press any key to continue.

**You must use a loop for this program.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2014, 01:47     How to do this? Array of strings
Посмотрите здесь:

C++ Strings
Соединение Strings C++
C++ Самописная Extract strings
BST of strings C++
Передача в функцию char*([Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
stima
429 / 284 / 16
Регистрация: 22.03.2011
Сообщений: 923
Завершенные тесты: 1
22.04.2014, 04:29     How to do this? Array of strings #2
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
#include <ctime>
#include <cstdlib>
#include <iostream>
 
const char *presidents[] =  { 
    /*1*/"George Washington (1789-1797)", 
    /*2*/"John Adams (1797-1801)", 
    /*3*/"Thomas Jefferson (1801-1809)",
    /*4*/"James Madison (1809-1817)",
    /*5*/"James Monroe (1817-1825)",
    /*6*/"John Quincy Adams (1825-1829)",
    /*7*/"Andrew Jackson (1829-1837)",
    /*8*/"Martin Van Buren (1837-1841)",
    /*9*/"William H. Harrison (1841)",
   /*10*/"John Tyler (1841-1845)"   
    };
 
const int count = sizeof(presidents) / sizeof(presidents[0]);
 
int randomize()
{
    static bool shown[count] = {false};
 
    int index = rand() % count;
    for (; shown[index]; index = rand() % count);
    
    shown[index] = true;
    return index;
}
 
int main()
{
    const int tryes = 10;
    const int subtryes = 2;
 
    srand(unsigned(time(nullptr)));
 
    int success = 0;
    std::cout << "Enter the order number for each of the following presidents: " << std::endl;
    for (int i = 0; i < tryes; ++i)
    {
        int randomized = randomize();
        std::cout << presidents[randomized] << ": ";
 
        int user = -1;
        std::cin >> user;
 
        for (int j = 0; j < subtryes && user != (randomized + 1); ++j)
        {
            std::cout << "Wrong! Try again: ";
            std::cin >> user;
        }
 
        if (user == randomized + 1)
        {
            ++success;
            std::cout << "Right!" << std::endl;
        }
        else
        {
            std::cout << "Wrong! The correct answer is " << randomized << std::endl;
        }
    }
 
    std::cout << "You answered " << success << " of " << tryes << " correctly." << std::endl;
    std::cout << "Press any key to continue." << std::endl;
 
    std::cin.get();
    std::cin.get();
 
    return 0;
}
Shushan
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 5
26.04.2014, 22:25  [ТС]     How to do this? Array of strings #3
а можно написать эту программу не используя #include <cstdlib> ?

используя "for" or "while" как например в этой программе?
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
#include <iostream>
using namespace std;
int main()
{
    
    int low, high, max_divisors, num_with_max, count = 0;
    cout << "Enter the range: ";
    cin >> low >> high;
    
    //count divisors of the first number
    for(int i = 2; i < low / 2 + 1; i++)
        if(low % i == 0)
            count++;
    //save the count for the first number and first number as the max
    max_divisors = count;
    num_with_max = low;
 
    //count and compare divisors of every other integer
    //copy into max if larger number of divisors
    for(int i = low + 1; i <= high; i++)
    {
        count = 0;
        for(int j = 2; j < i / 2 + 1; j++) //count divisors for each i
            if(i % j == 0)
                count++;
        if(count > max_divisors) //compare with max and copy if larger
        {
            max_divisors = count;
            num_with_max = i;
        }
    }
    cout << endl << num_with_max << " has the largest with "
         << max_divisors << " divisors.\n";
    
    system("pause");
    return 0;
}
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6160 / 2889 / 282
Регистрация: 04.12.2011
Сообщений: 7,689
Записей в блоге: 3
27.04.2014, 03:29     How to do this? Array of strings #4
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
//Мне кажется оставлять ответы на экране оправдано, только если
//контролировать общее время (тест на скорость)) иначе глядя на
//правильные ответы "везунчик" у которого много повторов, ответит
//правильно не имея понятия о предмете
//поэтому решил скрыть результаты предыдущих вопросов
//перед каждым следующим
//и исключаем последовательные повторения
#include <iostream>
#include<ctime>
using namespace std;
const char *presinents[] = {
 
/*1*/"G. Washington (1789-1797)", 
    /*2*/"J. Adams (1797-1801)", 
    /*3*/"T. Jefferson (1801-1809)",
    /*4*/"J. Madison (1809-1817)",
    /*5*/"J. Monroe (1817-1825)",
    /*6*/"J. Q. Adams (1825-1829)",
    /*7*/"A. Jackson (1829-1837)",
    /*8*/"M. Van Buren (1837-1841)",
    /*9*/"W. H. Harrison (1841)",
   /*10*/"J. Tyler (1841-1845)"   
};
const char *qust_title = "Enter the order number for each of the following president: ";
 
int rnd_int(){
return rand()%9+1;
}
int main()
{
const int quest_n=10;
const int repeats=3;
    srand((size_t)time(0));
int to_exit=quest_n;
int right_answer(0);
int last_right_answer=right_answer;
int answer;
int answer_count=0;
while(to_exit--){
answer=-1;
system("CLS");//очищаем экран
//избегаем последовательных повторов
last_right_answer=right_answer;
do{
right_answer=rnd_int();
}while(right_answer == last_right_answer);
cout<<qust_title<<"\n"<<presinents[right_answer]<<": ";
cin >> answer;
for(int i=0; i < repeats; ++i){
    if(answer == right_answer+1){
    answer_count++;
    cout<<"Right!"<<endl;
    system("pause");
    break;
    }else{
cout<<endl;
if(i == repeats - 1){   
    cout<<"Wrong! The correct answer is: "<< (right_answer+1) << endl;
    system("pause");
    break;
            }
cout<<"Wrong! Try again: ";
cin >> answer;
        }
    }
}
cout<<endl;
cout<<"You answered "<< answer_count << " of " << quest_n << " questions correctly.";
cout<<endl;
system("pause");
}
Yandex
Объявления
27.04.2014, 03:29     How to do this? Array of strings
Ответ Создать тему
Опции темы

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