Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 46, средняя оценка - 4.63
lqazxsazl
2 / 2 / 0
Регистрация: 22.06.2011
Сообщений: 42
#1

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

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

Как сделать чтоб если я с клавиатуры в консоли введу "y" программа повторилась а если "n" то завершилась?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2011, 00:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как повторить программу (C++):

Возможно ли как-то перехватить действия процесса и повторить их? - C++
Доброго времени суток всем! Есть программа управляющая скоростью кулера. Я хотел бы каким-то образом записать и повторить действия,...

Как прочитать первую строку из файла а остальной текст повторить несколько раз? - C++
Я новичок в этом деле, прошу не осуждать. Помогите разобраться. Задание такое: Программа должна начать читать запись шоколада с...

Повторить исполнение кода - C++
Разработал такой супер-код, подскажите, как сделать, чтобы после последнего "mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); " сделать, чтобы...

Препод задал повторить сервис на с++ - C++
Есть интернет сервис - ip-calculator.ru Препод задал повторить его на с++. Часть уже выполнена, калькулятор может считать адресс...

Повторить последний минимальный элемент массива - C++
Дан одномерный целочисленный массив из N элементов. Повторить (вставить после или до него такой же) последний минимальный элемент массива;

Повторить строку вектора несколько раз - C++
Ну вот что со мной не так?)) #include <iostream> #include <clocale> #include <ctime> using namespace std; int...

45
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
23.06.2011, 10:53 #16
Цитата Сообщение от asics
Я не забуду.
так все говорят, пиши комментарии для себя будущего
1
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
23.06.2011, 10:55 #17
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
на этом форуме умеют из мухи слона сделать
3
asics
Freelance
Эксперт С++
2853 / 1788 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
23.06.2011, 10:58 #18
Цитата Сообщение от accept Посмотреть сообщение
так все говорят
А я зделаю.
Цитата Сообщение от accept Посмотреть сообщение
пиши комментарии для себя будущего
Поживем - увидим.
0
lqazxsazl
2 / 2 / 0
Регистрация: 22.06.2011
Сообщений: 42
23.06.2011, 10:58  [ТС] #19
Цитата Сообщение от easybudda Посмотреть сообщение
C
1
2
3
4
5
6
7
...
char ch;
do {
   /* что-то сделать */
   printf("continue? (y/n): ");
} while ( scanf("%c%*c", &ch) == 1 && ( ch == 'y' || ch == 'Y' ) );
...
Попробовал вот так но программа закрывается в любом случае.
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
23.06.2011, 11:04 #20
эта штука на два перевода строки реагирует, чего не должно быть
считывает любой символ
0
Deviaphan
23.06.2011, 13:21
  #21

Не по теме:

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

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

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

Не по теме:

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

1
asics
23.06.2011, 14:03
  #24

Не по теме:

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

0
easybudda
Модератор
Эксперт CЭксперт С++
9916 / 5839 / 975
Регистрация: 25.07.2009
Сообщений: 11,013
23.06.2011, 14:22 #25

Не по теме:

Цитата Сообщение от 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
lqazxsazl
2 / 2 / 0
Регистрация: 22.06.2011
Сообщений: 42
23.06.2011, 16:32  [ТС] #26
Уф уф уф короче та же хрень при любом раскладе закрывается. Вот код на котором ставлю эксперименты кто нибудь попробуйте заработает у вас или нет отпишитесь если да.
Программа решает квадратное уравнение надо ввести 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
easybudda
Модератор
Эксперт CЭксперт С++
9916 / 5839 / 975
Регистрация: 25.07.2009
Сообщений: 11,013
23.06.2011, 18:50 #27
вот так переспрашивает
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
lqazxsazl
2 / 2 / 0
Регистрация: 22.06.2011
Сообщений: 42
23.06.2011, 19:17  [ТС] #28
Ну по поводу что она не до конца правильная я не великий программист я только учусь , а про дискриминант равен 0 я хотел учесть но пока не придумал как. Только учу c++ это так для закрепления ввода вывода итд......
0
grizlik78
Эксперт С++
1974 / 1467 / 122
Регистрация: 29.05.2011
Сообщений: 3,037
23.06.2011, 19:24 #29
Строго говоря, решений всегда 2. Просто при нулевом дискриминанте одинаковые, а при отрицательном комплексно-сопряжённые. Но автор задания может и не оценить
Учесть так же как и для 2 корней: сравнивать с нулём. Будет цепочка if {...} else if {...} else {...} Только вывод корней надо внутрь условий внести.
Ну и действительно непонятно, почему переменные для вещественных чисел объявлены как int.
0
lqazxsazl
2 / 2 / 0
Регистрация: 22.06.2011
Сообщений: 42
23.06.2011, 19:30  [ТС] #30
Цитата Сообщение от grizlik78 Посмотреть сообщение
Ну и действительно непонятно, почему переменные для вещественных чисел объявлены как int.
Ну потому что я учу с++ 3 день и книги по с++ помогают не очень путаю еще...........
0
23.06.2011, 19:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2011, 19:30
Привет! Вот еще темы с ответами:

повторить введенные символы, за исключением десятичных символов - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;string&gt; int _tmain(int argc, _TCHAR* argv) { setlocale(LC_ALL, &quot;Russian&quot;); ...

Функция, в которой повторить алгоритм любой сортировки n раз - C++
Как сделать функцию, которая бы повторяла алгоритм любой сортировки n кол-во раз( n вводится с клавиатуры). Каждя сортировка должна...

Возможность повторить расчет с новыми данными не выходя из программы. - C++
Подскажите пожалуйста, как на С++ будет писаться код, который на Паскале пишется так: program Laba; Label 1; ch :char; 1: ...

Если длина строки меньше заданной, то повторить ввод - C++
есть массив из длины 21 елемент, надо зделать проверку, если длина &gt; заданой повторить ввод. #include &lt;string&gt; #include &lt;iostream&gt; ...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru