Одесса: °С (вода °С)
Киев: 8°С

Тема: Програмка на C++. Подскажите новичку где ошибка?

Ответить в теме
Показано с 1 по 6 из 6
  1. Вверх #1
    Saintfull
    гость

    Unhappy Програмка на C++. Подскажите новичку где ошибка?

    Во собственно причина всех бед не могу понять в чем причина. После нажатия двойки, сразу пишет, что вы использовали все шансы, не вычисляя начало функции. Если что - не судите строго (учу неделю)...
    #include <iostream>
    #include <cstdlib>
    using namespace std;
    void play (int m);

    int main()
    {
    int option;
    int magic;

    magic = rand();

    do {
    cout << "1. Получить новое магическое число.\n";
    cout << "2. Сыграть.\n";
    cout << "3. Выйти из программы.\n";
    do {
    cout << "Введите свой вариант: ";
    cin >> option;
    } while(option<1 || option>3);

    switch(option) {
    case 1:
    magic = rand();
    break;
    case 2:
    play(magic);
    break;
    case 3:
    cout << "До свидания.\n";
    break;
    }
    } while(option!=3);

    return 0;
    }

    void play (int m)
    {
    int t, x;

    for(t=0; t>100; t++) {
    cout << "Угадайте магическое число: ";
    cin >> x;

    if (x == m) {
    cout << "**Правильно**\n";
    return;
    }
    else
    if (x<m) cout << "Маловато. \n";
    else cout << "Многовато\n";
    }
    cout << "Вы использвали все шансы угадать число.\n";
    }


  2. Вверх #2
    у тебя в цикле for неправильно задано условие, соответственно ты в него вообще не попадаешь, надо вот так:
    Код:
    for(t=0; t<100; t++) {
    и еще: ограничь диапазон генерируемого числа - я например задолбался сидеть и угадывать какое число сгенерировала программа в интовом диапазоне. вот так можно например:
    Код:
    magic = rand()%100;
    будут числа от 0 до 100

  3. Вверх #3
    Новичок
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    25
    Сообщений
    71
    Репутация
    29
    ПО-хорошему, надо бы еще и задать сид генератора псевдослучайных чисел. Например, так:
    #include <ctime>
    ...
    srand(time(0));
    ...
    в интовом диапазоне
    Генерируется число не в интовом диапазоне, а до константы RAND_MAX, равной, обычно, 32767. Соответственно, если автор хочет получить случайное число от 0 до k, то нужно брать остаток по модулю k. Стоит учесть такую вещь, что если k не слишком сильно отличается от RAND_MAX, то желательно брать k таким, чтобы остаток от RAND_MAX по модулю k был как можно меньше, т.к. в противном случае распределение ПСЧ будет значительно неравномерным.
    Последний раз редактировалось Sfairat; 11.04.2010 в 16:11.

  4. Вверх #4
    Saintfull
    гость
    блин точно! спасибо вам большое!!! Sfairat почти ничего не понял но всё равно спасибо! И еще... Sfairat, если тебя не затруднит распиши по подробней (ну как для полного чайника) и ПСЧ - это что-то типа Положения Случайных Чисел???

  5. Вверх #5
    Saintfull
    гость
    Да и не посоветуете какой-то Portable компилятор С++???

  6. Вверх #6
    Постоялец форума Аватар для glyph
    Пол
    Мужской
    Сообщений
    2,208
    Репутация
    418
    Цитата Сообщение от Saintfull Посмотреть сообщение
    Да и не посоветуете какой-то Portable компилятор С++???
    Они все должны быть portable по определению. Ты имеешь ввиду такой, чтобы можно было скопировать на флешку и ходить с ним по улицам и барам? Так подойдет любой, важно, чтобы сам компилятор был в путях, и чтобы были установлены INCLUDE и LIBS - или как переменные окружения, или как параметры компилятора.

    В этом отношении удобнее компиляторы С, так как они относительно небольшие. Думаю, какой-то старый VisualC++ Toolkit тоже поддается такой процедуре, из свободных MinGW точно так может.

    Касаемо твоего кода: там много ошибок. Часть из них я исправил и прокомментировал, см. вложение. Но программа все равно толком не работает, кое-где циклится. По хорошему, ее надо переписать вообще. Не претендую на самый идиоматический вариант "Угадай число", но если любопытно, то см. второе вложение.

    К сожалению, на данном этапе разбор и пояснение твоих ошибок принесут больше вреда, чем пользы. Поэтому забей и продолжай учить дальше.


Ответить в теме

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения