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

Поскажите как правильно повторять программу несколько раз - C++

Восстановить пароль Регистрация
 
Rev
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 27
19.11.2011, 21:35     Поскажите как правильно повторять программу несколько раз #1
Вот я состряпал небольшой бред недоучки...и никак не могу сделать правильное повторение данных действий...Я не пойму как правильно удалить переменную из памяти после того как выбираю вариант "у", она ведь остается и опять записывается в
C++
1
scanf("%c%*c", &c);
Будьте добры помогите...
Вот:
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
#include <iostream>
#include <string>
#include <Windows.h>
#include <stdio.h>
 
 
int main(void)
 
{
char ch;
        do {
    int a,b,c;
printf("\nÂûáåðèòå ГўГ*ðèГ*Г*ГІ:\n");
    printf("a.Îòêðûòèå ГґГ*éëîâ\n");
    printf("b.Îòêðûòèå ГЇГ*ïîê\n");
    printf("c.Ïîèñê ГґГ*éëîâ\n");     
printf("\nÂâåäèòå ïåðâóþ ГЎГіГЄГўГі ГЇГіГ*ГЄГІГ* äëÿ âûáîðГ*:");
    printf("\0");
scanf("%c%*c", &c); // ГўГўГҐГ±ГІГЁ ГЎГіГЄГўГі
///////////////////////////////////////////////////////////////////////////////
switch ( c ) // Г§Г*ãîëîâîê îïåðГ*òîðГ* âûáîðГ*
{
case 'a': 
case 'A':     
{
     std::string fileName;
     std::cout << "Ââåäèòå èìÿ ГґГ*éëГ* äëÿ îòêðûòèÿ: ";
     std::cin >> fileName;
ShellExecute(NULL, "open", fileName.c_str(), NULL, NULL, SW_SHOWNORMAL); //ÔóГ*êöèÿ ShellExecute äëÿ Г°Г*áîòû ГЁГ§ ГЁГ*ñòðóìåГ*ГІГ*ðèÿ Windows Development
}break;//ïåðâГ*Гї ÿ÷åéêГ* äëÿ îòêðûòèÿ ГґГ*Г«Г*
///////////////////////////////////////////////////////////////////////////////
case 'b':
case 'B':
{
     std::string fileName;
     std::cout << "Ââåäèòå ГЇГіГІГј ГЇГ*ГЇГЄГЁ: ";
     std::cin >> fileName;
ShellExecute(NULL, "explore", fileName.c_str(), NULL, NULL, SW_SHOWNORMAL); 
} break;
///////////////////////////////////////////////////////////////////////////////
case 'c': 
case 'C':
{
     std::string fileName;
     std::cout << "Ââåäèòå èìÿ ГґГ*éëГ* äëÿ ïîèñêГ*: ";
     std::cin >> fileName;
ShellExecute(NULL, "find", fileName.c_str(), NULL, NULL, SW_SHOWNORMAL); 
}break;
default: printf("\nГЌГҐ Г§Г*Г*Гѕ Гї ГІГ*ГЄГЁГµ!"); // ГЇГ® óìîë÷Г*Г*ГЁГѕ
}
//////////////////////////////////////////////////
std::cout << "continue? (y/n): ";////////////////
std::cin >> ch;/////////////////////////////////
} while ( ch == 'y' || ch == 'Y'  );///
         return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mc.Duck
Заблокирован
19.11.2011, 21:39     Поскажите как правильно повторять программу несколько раз #2
Rev, Какую переменную? У тебя же даже нет ниодного объявления динамической переменной)
Удаляться могут только динамически созданные.
Rev
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 27
19.11.2011, 21:42  [ТС]     Поскажите как правильно повторять программу несколько раз #3
Цитата Сообщение от mc.Duck Посмотреть сообщение
Rev, Какую переменную? У тебя же даже нет ниодного объявления динамической переменной)
Удаляться могут только динамически созданные.

Ну судя по написанию можно было ведь предположить, что я человек немного как говорится "не в теме" )))
А как тогда поступить в данном случае? Или что конкретно надо предпринять?)
castaway
Эксперт С++
4844 / 2983 / 367
Регистрация: 10.11.2010
Сообщений: 11,016
Записей в блоге: 10
Завершенные тесты: 1
19.11.2011, 21:48     Поскажите как правильно повторять программу несколько раз #4
Цитата Сообщение от Rev Посмотреть сообщение
scanf("%c%*c", &c); // ввести букву
Вводишь букву, интерпретируешь её как тип char, а записываешь в переменную типа int.
Не комильфо!

Добавлено через 5 минут
А это вообще какой-то трэш:
C++
1
while ( ch == 'y' || ch == 'Y'  );
Скажи, ты понимаешь что это означает?
Rev
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 27
19.11.2011, 21:52  [ТС]     Поскажите как правильно повторять программу несколько раз #5
Цитата Сообщение от lazybiz Посмотреть сообщение
А это вообще какой-то трэш:
C++
1
while ( ch == 'y' || ch == 'Y'  );
Скажи, ты понимаешь что это означает?
Ну когда то, что мы ввели равняется "у", то выполняется опять все по новой, а если что-то другое вводится то оно все закроется.


Так ведь?
castaway
Эксперт С++
4844 / 2983 / 367
Регистрация: 10.11.2010
Сообщений: 11,016
Записей в блоге: 10
Завершенные тесты: 1
19.11.2011, 22:02     Поскажите как правильно повторять программу несколько раз #6
Нет, не так. У тебя блок цикла while заканчивается в конце строки. Т.е. переменная ch не обновляется.
Rev
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 27
19.11.2011, 22:15  [ТС]     Поскажите как правильно повторять программу несколько раз #7
Цитата Сообщение от lazybiz Посмотреть сообщение
Нет, не так. У тебя блок цикла while заканчивается в конце строки. Т.е. переменная ch не обновляется.

Блин(
Я не знаю как...поступить имея Ваше пожелание...(

Добавлено через 2 минуты
Как просто реализовать повторение этого всего, без той бредятины которую я написал?Я реально в ступоре...
castaway
Эксперт С++
4844 / 2983 / 367
Регистрация: 10.11.2010
Сообщений: 11,016
Записей в блоге: 10
Завершенные тесты: 1
19.11.2011, 22:31     Поскажите как правильно повторять программу несколько раз #8
Стоп стоп стоп... С последним я погорячился. У тебя просто код как порядок в биотуалете.
Только сейчас полностью вник в вопрос. А что, собственно не так?!! О какой переменной ты говоришь?

Добавлено через 2 минуты
Не зная проблемы, я в твоем коде поменял бы строки:
C++
1
int a,b,c;
на
C++
1
char c;
и
C++
1
scanf("%c%*c", &c);
на
C++
1
scanf("%c", &c);
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
19.11.2011, 22:40     Поскажите как правильно повторять программу несколько раз #9
Цитата Сообщение от mc.Duck Посмотреть сообщение
Удаляться могут только динамически созданные.
Это пока прога работает, а при закрытии удалятся и статические, ТСу же походу как раз и надо удалить при закрытии.
Rev
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 27
19.11.2011, 22:40  [ТС]     Поскажите как правильно повторять программу несколько раз #10
Ну вот к примеру я выбираю в конце "у"...После чего у меня этот весь "туалет" запускается по новой, и доходя до места где мне необходимо ввести букву соответствующую имени case-а, я ее ввожу, но switch возвращает значение по умолчанию(Мол не знаю таких)...т.е., "у", остался в памяти и записался по новой в
C++
1
scanf("%c", &c);
и уже до лямки то, что я ввел к примеру "b"...Как этого избежать...?
lazybiz , спасибо, что уделяете время)
castaway
Эксперт С++
4844 / 2983 / 367
Регистрация: 10.11.2010
Сообщений: 11,016
Записей в блоге: 10
Завершенные тесты: 1
19.11.2011, 23:10     Поскажите как правильно повторять программу несколько раз #11
Цитата Сообщение от taras atavin Посмотреть сообщение
Это пока прога работает, а при закрытии удалятся и статические.
При закрытии и вся прога удалиться из памяти если на то пошло.

Добавлено через 18 минут
Rev, понял о чем ты. Пока сам не соображу. Подожди, сейчас найдем в чем проблема.

Добавлено через 9 минут
В общем меняй целиком код на С++ :
* убери #include <stdio.h>
* между инклудов и main() вставь строку: using namespace std;
* все printf замени на cout
* все scanf замени на cin
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
19.11.2011, 23:15     Поскажите как правильно повторять программу несколько раз #12
Нда. И принтф, и потоки. Кто так пишет? Rev, ты кильку в компоте не пробовал замачивать? Пельмени на чаю варить? Мороженное в пирожки не научился запихивать? Так чтоб и тесто прожарилось, и мороженное не растаяло? И как ты сам собираешься ориентироваться в этой мешанине стилей?
Rev
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 27
19.11.2011, 23:27  [ТС]     Поскажите как правильно повторять программу несколько раз #13
Цитата Сообщение от taras atavin Посмотреть сообщение
Нда. И принтф, и потоки. Кто так пишет? Rev, ты кильку в компоте не пробовал замачивать? Пельмени на чаю варить? Мороженное в пирожки не научился запихивать? Так чтоб и тесто прожарилось, и мороженное не растаяло? И как ты сам собираешься ориентироваться в этой мешанине стилей?
Я не говорю, что быдлокодер 100%, и что все это офигенно знаю...Понятное дело, у Вас как человека более осведомленного и имеющего именно это направление...вся ситуация вызывает негодование, смех и повышение ЧСВ...
Мне это все понятно.
Кто так пишет? - я по незнанию мат. части так пишу.
А как говорится:"если не знаешь чего-то, не бойся спросить"...
Можете бугагакать долго, проходящие мимо...но вы поржали, а я что-то понял для себя, чтобы не порой в следующем такой фигни.


lazybiz - спасибо, еще раз. За то,что откликнулись.
Поменял я там все...теперь оно сразу же закрывается без задержки...ай ладно, сейчас все перепишу по новой...
castaway
Эксперт С++
4844 / 2983 / 367
Регистрация: 10.11.2010
Сообщений: 11,016
Записей в блоге: 10
Завершенные тесты: 1
19.11.2011, 23:37     Поскажите как правильно повторять программу несколько раз #14
Rev, не понял, программа заработала или нет?
Просто у меня после переработки она заработала как надо.
Rev
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 27
19.11.2011, 23:51  [ТС]     Поскажите как правильно повторять программу несколько раз #15
Цитата Сообщение от lazybiz Посмотреть сообщение
Rev, не понял, программа заработала или нет?
Просто у меня после переработки она заработала как надо.
А не могли бы Вы показать текст ее...?У меня оно не работает(
Сразу выкл.
я что-то упустил...значит(

Добавлено через 7 минут
ОЙ,йойой...Стойте не надо!!!Я уже нашел свою ошибку!
Не сменил все на char, компилировал не тот исходник...а то их тут у меня 3 разных открыто)
Большое Вам спасибо)))Вы очень помогли, теперь я знаю в чем просчитался, и как нельзя делать)))
castaway
Эксперт С++
4844 / 2983 / 367
Регистрация: 10.11.2010
Сообщений: 11,016
Записей в блоге: 10
Завершенные тесты: 1
19.11.2011, 23:59     Поскажите как правильно повторять программу несколько раз #16
Одно "НО":
1. Тут не заменяны некоторые операторы. (например printf)
2. cin в string не канает. поэтому строки закомментированы.
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
#include <Windows.h>
#include <iostream>
#include <string>
 
using namespace std; 
 
int main()
{
    char ch;
    do {
        char c;
 
        printf("\nVariant:\n");
        printf("a. Open file\n");
        printf("b. Open folder\n");     
        printf("c. Find\n");     
        printf("\n Enter letter:");
        printf("\0");
        cin >> c;
 
        switch ( c ) // заголовок оператора выбора
        {
            case 'a': 
            case 'A':     
            {
                string fileName;
                cout << "Введите имя файла для открытия: ";
//              cin >> fileName;
                ShellExecute(NULL, "open", fileName.c_str(), NULL, NULL, SW_SHOWNORMAL); //Функция ShellExecute для работы из инструментария Windows Development
            }break;//первая ячейка для открытия фала
 
            case 'b':
            case 'B':
            {
                string fileName;
                cout << "Введите путь папки: ";
//              cin >> fileName;
                ShellExecute(NULL, "explore", fileName.c_str(), NULL, NULL, SW_SHOWNORMAL); 
            } break;
 
            case 'c': 
            case 'C':
            {
                string fileName;
                cout << "Введите имя файла для поиска: ";
//              cin >> fileName;
                ShellExecute(NULL, "find", fileName.c_str(), NULL, NULL, SW_SHOWNORMAL); 
            }break;
 
            default: printf("\nНе знаю я таких!"); // по умолчанию
 
        }
 
        cout << "continue? (y/n): ";
        cin >> ch;
    } while ( ch == 'y' || ch == 'Y' );
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2011, 11:35     Поскажите как правильно повторять программу несколько раз
Еще ссылки по теме:

C++ Как записать команду в консоль windows несколько раз?
C++ Повторять действие бесконечность раз
Как правильно передать несколько данных в программу из функции? C++

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

Или воспользуйтесь поиском по форуму:
Rev
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 27
20.11.2011, 11:35  [ТС]     Поскажите как правильно повторять программу несколько раз #17
А от так у меня работает
C++
1
std::cin >> fileName;
И вместо printf -
C++
1
cout <<();
стоит...Все воркед)))
Yandex
Объявления
20.11.2011, 11:35     Поскажите как правильно повторять программу несколько раз
Ответ Создать тему
Опции темы

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