Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.55/145: Рейтинг темы: голосов - 145, средняя оценка - 4.55
2 / 2 / 0
Регистрация: 22.06.2011
Сообщений: 42

Как повторить программу

23.06.2011, 00:02. Показов 32260. Ответов 45
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сделать чтоб если я с клавиатуры в консоли введу "y" программа повторилась а если "n" то завершилась?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.06.2011, 00:02
Ответы с готовыми решениями:

Как повторить программу?
Как повторить программу?

Повторить виндушную программу на Java
Привет всем! Хочу спросить совета... Ситуация: У компьютера на LPT-порте сидит устройство для сканирования отпечатка пальца....

Как повторить?
Подскажите, пожалуйста, как повторить данную обработку?

45
23.06.2011, 13:21
Студворк — интернет-сервис помощи студентам

Не по теме:

Цитата Сообщение от asics Посмотреть сообщение
Я не забуду.
Спс. Поржал.
Большую программу не просто невозможно запомнить, этого не нужно!

0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
23.06.2011, 13:43
Цитата Сообщение от Deviaphan Посмотреть сообщение
Спс. Поржал.
ОМГ, еще один. Все ? Поржал ? Молодец.

Добавлено через 13 минут
Цитата Сообщение от Deviaphan Посмотреть сообщение
Большую программу не просто невозможно запомнить, этого не нужно!
И позволь я сам буду решать что мне нужно запоминать, а что нет, okda
0
23.06.2011, 13:48

Не по теме:

Позволяю. Не мне с этим жить.)

1
23.06.2011, 14:03

Не по теме:

Благодарствую.

0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12848 / 7597 / 1766
Регистрация: 25.07.2009
Сообщений: 13,985
23.06.2011, 14:22

Не по теме:

Цитата Сообщение от lqazxsazl Посмотреть сообщение
Попробовал вот так но программа закрывается в любом случае.
Может память в компе битая? У меня работает... ;)



C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
int main(void){
    char ch;
 
    do {
        printf("Do some job...\n");
        printf("continue? (y/n): ");
    } while ( scanf("%c%*c", &ch) == 1 && ( ch == 'y' || ch == 'Y' ) );
 
    return 0;
}


Цитата Сообщение от accept Посмотреть сообщение
эта штука на два перевода строки реагирует, чего не должно быть
%с считывает любой символ
эта штука считывает введённую букву и пропускает символ '\n', следующий за ней в потоке, иначе только один раз сработало бы.

 Комментарий модератора 
asics, Deviaphan, обстановку не нагнетаем...
0
2 / 2 / 0
Регистрация: 22.06.2011
Сообщений: 42
23.06.2011, 16:32  [ТС]
Уф уф уф короче та же хрень при любом раскладе закрывается. Вот код на котором ставлю эксперименты кто нибудь попробуйте заработает у вас или нет отпишитесь если да.
Программа решает квадратное уравнение надо ввести 3 числа.


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
#include <iostream> 
#include <windows.h> 
#include <math.h> 
#include <stdio.h>
using namespace std; 
int main(void)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
          char ch;
do {
   cout << "Введите a, b, c" << endl;
    int a, b, b2, c, d, x1, x2, y;
    cin >> a;
    cin >> b;
    cin >> c;
    y = 2;
    b2 = pow(b,y);
    d = b2-(4*a*c); 
    cout << "d=" << d << endl;
    x1 = (-(b)+(sqrt(d)))/(2*a); 
    x2 = (-(b)-(sqrt(d)))/(2*a); 
           if (d>0) 
    cout << "d>0 Два корня." << endl;
        else
    cout << "d<0 Нет решений" << endl;
    cout << "Ответ:" << endl;
    cout << "x1=" << x1 << endl;
    cout << "x2=" << x2 << endl;
    printf("Do some job...\n");
                printf("continue? (y/n): ");
        } while ( scanf("%c%*c", &ch) == 1 && ( ch == 'y' || ch == 'Y' ) );
         return 0;
}
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12848 / 7597 / 1766
Регистрация: 25.07.2009
Сообщений: 13,985
23.06.2011, 18:50
вот так переспрашивает
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
#include <iostream> 
#include <windows.h> 
#include <math.h> 
#include <stdio.h>
using namespace std; 
int main(void){
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char ch;
    do {
        cout << "Введите a, b, c" << endl;
        int a, b, b2, c, d, x1, x2, y;
        cin >> a;
        cin >> b;
        cin >> c;
        y = 2;
        b2 = pow(b,y);
        d = b2-(4*a*c); 
        cout << "d=" << d << endl;
        x1 = (-(b)+(sqrt(d)))/(2*a); 
        x2 = (-(b)-(sqrt(d)))/(2*a); 
        if (d>0)
            cout << "d>0 Два корня." << endl;
        else
            cout << "d<0 Нет решений" << endl;
        cout << "Ответ:" << endl;
        cout << "x1=" << x1 << endl;
        cout << "x2=" << x2 << endl;
        cout << "continue? (y/n): ";
        cin.ignore(1024, '\n');
        cin >> ch;
    } while ( ch == 'y' || ch == 'Y'  );
    
    return 0;
}
Но программа по сути всё равно не правильно написана - при отрицательном дискриминанте выведет или случайные числа, или результаты предыдущих вычислений, если они были. Да и с приведением int к double и обратно тоже смело... А это ничего, что дробные части результатов будут отбрасываться? И кстати, при нулевом дискриминанте уравнение имеет одно решение - этот случай вообще никак не предусмотрен...
1
2 / 2 / 0
Регистрация: 22.06.2011
Сообщений: 42
23.06.2011, 19:17  [ТС]
Ну по поводу что она не до конца правильная я не великий программист я только учусь , а про дискриминант равен 0 я хотел учесть но пока не придумал как. Только учу c++ это так для закрепления ввода вывода итд......
0
Эксперт С++
 Аватар для grizlik78
2383 / 1667 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
23.06.2011, 19:24
Строго говоря, решений всегда 2. Просто при нулевом дискриминанте одинаковые, а при отрицательном комплексно-сопряжённые. Но автор задания может и не оценить
Учесть так же как и для 2 корней: сравнивать с нулём. Будет цепочка if {...} else if {...} else {...} Только вывод корней надо внутрь условий внести.
Ну и действительно непонятно, почему переменные для вещественных чисел объявлены как int.
0
2 / 2 / 0
Регистрация: 22.06.2011
Сообщений: 42
23.06.2011, 19:30  [ТС]
Цитата Сообщение от grizlik78 Посмотреть сообщение
Ну и действительно непонятно, почему переменные для вещественных чисел объявлены как int.
Ну потому что я учу с++ 3 день и книги по с++ помогают не очень путаю еще...........
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,709
23.06.2011, 19:32
Мы, одинокие стареющие мужчины, делаем так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h> 
#include <conio.h> 
int main () {
 char per= 'y';;
 while (per== 'y'|| per== 'Y') {
  printf ("prodolzhit?\n");
  do {
   per= getch ();
  }
  while (per!= 'y'&&per!= 'Y'&&per!= 'N'&&per!= 'n');
 }
 return 0;
}
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12848 / 7597 / 1766
Регистрация: 25.07.2009
Сообщений: 13,985
23.06.2011, 22:38
Цитата Сообщение от lqazxsazl Посмотреть сообщение
путаю еще...
ну тогда постарайтесь запомнить:
char (character) - символьный тип данных, собственно для хранения символов в основном и используется.
int (integer) - целочисленный тип данных. Подходит для хранения индекса в массиве, календарного числа, месяца или года, количества учащихся в классе (был, помню, старый мультик, там у ученика в задаче 1 1/2 землекопа получилось), etc...
float (floating point) - вещественный тип "обычной" точности. Служит для хранения десятичных дробей. Примечателен тем, что совершенно непредсказуемо порой округляет хранимые значения. Использовать можно разве, что при серьёзной необходимости экономить память, пусть даже в ущерб точности.
double (double precision floating point) - вещественный тип "двойной" точности. Тот самый тип данных, который в большинстве случаев нужно использовать для хранения вещественных чисел.
2
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
24.06.2011, 02:09
Цитата Сообщение от easybudda
эта штука считывает введённую букву и пропускает символ '\n
эта штука реагирует на два пробела, как на ввод буквы, потому что спецификатор %c отличается от %s
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
24.06.2011, 02:34
Цитата Сообщение от accept Посмотреть сообщение
while (1) - стиль новичков
а что
C
1
for(;;)
тру?
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
24.06.2011, 03:12
это точно такие же break'и
одно дело, когда ты ставишь бесконечный цикл, когда без этого не обойтись, а другое - когда ты ставишь бесконечные циклы, расчитывая на break'и, потому что так проще по логике, и типа "не надо продумывать качественное условие выхода"

нужен один вход и один выход, тогда любые внутренние изменения цикла не затрагивают его ход
чего не скажешь про break'и, которые чуть что, надо сразу переписывать, или вообще переставлять местами, причём все
1
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
24.06.2011, 06:08
Цитата Сообщение от accept Посмотреть сообщение
которые чуть что, надо сразу переписывать, или вообще переставлять местами, причём все
о_0 С какого перепугу?
Разумеется, гораздо удобнее напихать в цикле кучу ифов, проверяющих на каждой итерации цикла необходимость выполнения кода, находящегося после изменения флага завершения. Ну и что, что цикл потенциально бесконечный и лишний (даже один) иф приравнивается к бесконечной потери времени... Кому какое дело, ведь break так внезапно код прерывает, что даже деструкторы от удивления не вызываются, глобальное потепление начинается и пингвины подняться не могут...
0
 Аватар для xAtom
935 / 760 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
24.06.2011, 10:08
break - это jmp из выхода за условие цикла кто-то думает что когда цикл прервётся ниже его код выпониться это особенно новички так break на ASM кидает за цикл метку. Два цикла ни чем друг от друга не отличаются.

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
    while(1) {
            
        printf("input word: ");
        char buff[32];
        scanf("%s", buff);
        if(! stricmp(buff, "exit"))
            break;
 
        printf("\tprint: %s\n", buff);
 
    }
 
    // здесь goto
 
    while(1) {
 
                      printf("input word: ");
        char buff[32];
        scanf("%s", buff);
        if(! stricmp(buff, "exit"))
            goto  jmp;
            
        printf("\tprint: %s\n", buff);
 
    }
jmp:   ;
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12848 / 7597 / 1766
Регистрация: 25.07.2009
Сообщений: 13,985
24.06.2011, 14:02
Цитата Сообщение от accept Посмотреть сообщение
эта штука реагирует на два пробела, как на ввод буквы
Ну хорошо. Конструкция
C
1
scanf("%c%*c", &ch);
читает из потока ввода два символа (вернее пытается прочитать). Первый прочитанный присваивает переданной переменной, а второй просто отбрасывает. В качестве учебного примера (учитывая уровень ТС) вполне достаточно. Но. Если мы решим почувствовать себя кулхацкерами, или кем-то вроде, и захотим взломать этот код, то начинать, конечно, нужно с добавления кучи пробелов после буквы 'y'...


xAtom, я думаю, основная идея в том, чтобы внутри тела цикла небыло заморочек по поводу им (циклом) управления, кроме, разумеется, случаев аварийного завершения. Кстати, в принципе согласен. Тело цикла - одна история, а сколько раз и при каких условиях это тело должно отработать - совсем другая...
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
25.06.2011, 05:38
Лучший ответ Сообщение было отмечено как решение

Решение

C
1
scanf("\t%c%*c", &ch);
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12848 / 7597 / 1766
Регистрация: 25.07.2009
Сообщений: 13,985
25.06.2011, 09:58
C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
int main(void){
    char ch;
    
    while ( scanf("\t%c%*c", &ch) == 1 )
        printf("%#x\n", (unsigned)ch);
    
    return 0;
}
тот же

только в профиль...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.06.2011, 09:58

Как повторить блок try
Помогите новичку в джаве, как повторить блок try если вылезло исключение? Неужели постоянно в цикле его крутить?

Как повторить readline?
Здравствуйте, у меня вопрос, как использовать readline, так, чтобы получалось, что-то типо диалога, он выдает текст, я ввожу данные и потом...

Как повторить кнопку IE?
Как повторить кнопку IE Stop (Остановить) с помощью JavaScript?

Как повторить рисунок?
10,18 штук

Как повторить перехваченный запрос?
как request отправить на сервер запрос скопированного с сниффера со всеми показателями (text, hex, raw, form, cookies ...)


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru