Member 12980387 Ответов: 1

Решить этот вопрос?


Программа просит пользователя ввести пять одиночных символов, разделенных пробелами, и в зависимости от символов генерирует случайное число.

Вот правила, которым нужно точно следовать:
- Если входной символ- "а", то программа сгенерирует случайное число от 1 до 20.
- Если входной символ- "е", то программа сгенерирует случайное число от 21 до 40.
- Если входной символ - "i", то программа сгенерирует случайное число от 41 до 60.
- Если входной символ - "о", то программа сгенерирует случайное число от 61 до 80.
- Если входной символ- "u", то программа сгенерирует случайное число от 81 до 100.
- Если входной символ не является одним из вышеперечисленных символов, выведите 0 на выходе.

Вот несколько примеров запусков:

Выполнить 1

Эта программа играет в простую игру со случайными числами.
Введите 5 гласных символов (a, e, i, o, u), разделенных пробелами: a e i o u
Случайные числа 10 25 46 69 99
---------------------------------------------------------------
Запустить 2

Эта программа играет в простую игру со случайными числами.
Введите 5 гласных символов (a, e, i, o, u), разделенных пробелами: a e A u o
Случайные числа 10 25 4 99 66
---------------------------------------------------------------
Запуск 3

Эта программа играет в простую игру со случайными числами.
Введите 5 гласных символов (a, e, i, o, u), разделенных пробелами: a z i e o
Случайные числа 10 0 43 29 76
---------------------------------------------------------------
Выполнить 4

Эта программа играет в простую игру со случайными числами.
Введите 5 гласных символов (a, e, i, o, u), разделенных пробелами: a z i f o
Случайные числа равны 15 0 47 0 74

Что я уже пробовал:

#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <ctime>

using namespace std;

/* Homework 3
Yong Yu Xuan
This program generates a random number depending on the
character inputted.
*/

int main()
{
    srand(time(0));

    //constant for setw()
    const int GAP = 6;

    //variables
    int num;

    int none = 0;
    char alphabet;
    char letter1, letter2, letter3, letter4, letter5;
    letter1 = 'a';
    letter2 = 'e';
    letter3 = 'i';
    letter4 = 'o';
    letter5 = 'u';

    //tell user to enter five characters at random
    cout << "This program plays a simple, random number game." << endl;
    cout << "Enter five vowel characters (a,e,i,o,u) in any order separated ";
    cout << "by spaces: ";
    cin >> alphabet >> alphabet >> alphabet >> alphabet >> alphabet;

    alphabet = num;

    cout << "The five random numbers are: " << setw(GAP) << num << setw(GAP);
    cout << setw(GAP) << num << setw(GAP) << num;
    cout << setw(GAP) << num << setw(GAP) << num;

    if (alphabet == letter1)
        cout << setw(GAP) << rand() % 19 + 1;

    else if (alphabet == letter2)
        cout << setw(GAP) << rand() % 19 + 21;

    else if (alphabet == letter3)
        cout << setw(GAP) << rand() % 19 + 41;

    else if (alphabet == letter4)
        cout << setw(GAP) << rand() % 19 + 61;

    else if (alphabet == letter5)
        cout << setw(GAP) << rand() % 19 + 81;

    else
        cout << none << endl;

    return 0;
} 

Patrice T

А у вас есть вопрос ?

Stefan_Lang

Решение 1 указывает на проблемы с вашим кодом. Если это решит проблему, пожалуйста, примите решение, чтобы мы могли видеть, что вам больше не нужна помощь. В противном случае добавьте комментарий, чтобы мы знали, что вам нужно больше советов.

Кроме того, теперь, когда вы проспали его (на самом деле несколько раз), может быть, вам стоит просто еще раз взглянуть на программу: кажется, у вас были правильные идеи, но, по-видимому, вы запутались по пути. Со свежим умом вы можете теперь самостоятельно определить проблемы.

1 Ответов

Рейтинг:
1

Patrice T

Эта строка очень подозрительна, она читает 5 значений в 1 переменной

cin >> alphabet >> alphabet >> alphabet >> alphabet >> alphabet;

что это за магия, которая применит остальную часть программы к каждому значению?
но на самом деле это не имеет значения, потому что этот
alphabet = num;

это убивает ценность.
Боюсь, вам придется пересмотреть свою программу, вся организация ошибается.
-----
Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Он позволяет вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения, это невероятный инструмент обучения.

Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.
-----
Освоение некоторых методов анализа может помочь, Метод Дейкстры сверху вниз это хорошее начало.
https://en.wikipedia.org/wiki/Top-down_and_bottom-up_design[^]
https://en.wikipedia.org/wiki/Structured_programming[^]
https://en.wikipedia.org/wiki/Edsger_W._Dijkstra[^]
https://www.cs.utexas.edu/users/EWD/ewd03xx/EWD316.PDF[^]