Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2012, 11:42   #1
Kaela
Пользователь
 
Регистрация: 29.04.2012
Сообщений: 36
По умолчанию Реализация ограниченного выбора

Собственно сел писать лабораторную работу по двусвязным спискам.
В двусвязных списках разбираюсь, но...
Надо написать программу с "защитой от дурака", т.е. чтобы можно было выбирать только определённые пункты.
В данном случае мне нужен ввод только 1 или 2.
Я реализую это так

Код:
include <iostream>
using namespace std;
struct List
{
int info;
List *next,*prev;
};
void ViewUp(List **, List **); // просмотр очереди сверху
//в программе я даю выбор, хотите просмотреть сверху или снизу?



void main()
{
int kod=3;
while (kod!=1 && kod!=2)
            {
               cout<<Rus("Вы хотите просмотреть список сверху или снизу? Чтобы смотреть снизу введите 1, сверху - введите 2.") <<endl;
               cout<<Rus("Ваш выбор:");
               cin>>kod;
               switch(kod)
                              {
                              case 1:ViewUp(&b,&e);break;//список создан уже
                              case 2:ViewDown(&b,&e);break;//такая функция тоже есть
                              default:cout<<Rus("Попробуйте ещё раз.")<<endl;break;
                              }
            }
}

Собственно с чем прошу помочь
Может кто подскажет реализацию такую, но не армейским способом, как у меня.
Также есть проблема в том, что первый раз всё работает хорошо, а потом когда хочу выбрать меню второй раз, значение kod сохраняется и в цикл даже не входит.

Последний раз редактировалось Kaela; 29.04.2012 в 15:28.
Kaela вне форума Ответить с цитированием
Старый 29.04.2012, 19:41   #2
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

поменяй условие на while (1)
onewho вне форума Ответить с цитированием
Старый 29.04.2012, 19:48   #3
Kaela
Пользователь
 
Регистрация: 29.04.2012
Сообщений: 36
По умолчанию

а как тогда реализовать выход из цикла?
ведь break относится к switch, а не циклу

Последний раз редактировалось Kaela; 29.04.2012 в 19:53.
Kaela вне форума Ответить с цитированием
Старый 29.04.2012, 22:01   #4
rmv240899
Форумчанин
 
Регистрация: 18.02.2012
Сообщений: 155
По умолчанию

Сделайте пункт для выхода, например 0. Затем пишете:
Код:
switch(kod)
{
      case 0: return;
      ...
}
Тогда придется пожертвовать кодом после цикла. Если так нельзя - просто поместите этод код в отдельную функцию.
rmv240899 вне форума Ответить с цитированием
Старый 30.04.2012, 01:36   #5
Kaela
Пользователь
 
Регистрация: 29.04.2012
Сообщений: 36
По умолчанию

спасибо за ответы
к слову сказать, я додумал ещë одно решение проблемы:

ввести в бесконечном цикле bool переменную,которая будет менять свое значение в зависимости от значения переменной kod.
Kaela вне форума Ответить с цитированием
Старый 30.04.2012, 02:16   #6
ERAGORN
Пользователь
 
Аватар для ERAGORN
 
Регистрация: 02.01.2012
Сообщений: 46
По умолчанию

Код:
#include <iostream>
#include <stdlib.h>


int main( void )
{
   cout<<Rus("Вы хотите просмотреть список сверху или снизу? Чтобы смотреть снизу введите 1, сверху - введите 2." ) <<endl; 
    cout<<Rus("Ваш выбор(отказаться - 3): ");

    do{
        int kod;
        cin >> kod;

        switch ( kod ){
            case 1: ViemUp(&b, &e); break;
            case 2: ViemDown(&b, &e); break;
            case 3: break;
            default: cout << "А не правильно, ещё раз: "; continue;
        }
    }while ( false );

    system("PAUSE");

    return 0;
}

Последний раз редактировалось ERAGORN; 30.04.2012 в 21:34.
ERAGORN вне форума Ответить с цитированием
Старый 30.04.2012, 19:05   #7
Kaela
Пользователь
 
Регистрация: 29.04.2012
Сообщений: 36
По умолчанию

Цитата:
Сообщение от ERAGORN Посмотреть сообщение
Код:
#include <iostream>
#include <stdlib.h>


int main( void )
{
   cout<<Rus("Вы хотите просмотреть список сверху или снизу? Чтобы смотреть снизу введите 1, сверху - введите 2." ) <<endl; 
    cout<<Rus("Ваш выбор: ");

    do{
        int kod;
        cin >> kod;

        switch ( kod ){
            case 1: ViemUp(&b, &e); break;
            case 2: ViemDown(&b, &e); break;
            default: cout << "А не правильно, ещё раз: "; continue;
        }
    }while ( false );

    system("PAUSE");

    return 0;
}
у тебя нету выхода из цикла.
к слову сказать я уже нашёл рациональное решение
у меня такое:
Код:
include <iostream>
struct List
{
int info;
List *next,*prev;
};
void ViewUp(List **, List **);
void ViewDown(List **, List **);
void UpDown(List **, List **);
using namespace std;

void UpDown(List **b, List **e)
{
	while (true)
	{
		int kod1;
		bool w=true;
		cout<<Rus("Если вы хотите просмотреть список снизу, то введите 1, если сверху, то введите 2...")<<endl;
		cout<<Rus("Ваш выбор:");
		cin>>kod1;
		if(kod1==1 || kod1==2) w=false;
		switch (kod1)
		{
		case 1:ViewDown(b,e);break;
		case 2:ViewUp(b,e);break;
		default:cout<<Rus("Попробуйте ещё раз...")<<endl;break;
		}
		if(w==false) break;
	}
	return;
}
//Функция UpDown реализует то, про что я интересовался собственно в //теме.
Kaela вне форума Ответить с цитированием
Старый 30.04.2012, 21:37   #8
ERAGORN
Пользователь
 
Аватар для ERAGORN
 
Регистрация: 02.01.2012
Сообщений: 46
По умолчанию

изменил код выши.
ERAGORN вне форума Ответить с цитированием
Старый 30.04.2012, 23:18   #9
Kaela
Пользователь
 
Регистрация: 29.04.2012
Сообщений: 36
По умолчанию

да
я изменил свой код
и это решение намного рациональней,чем то,что было

проблема решена
спасибо за начало идеи onewho
Kaela вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Лабораторная работа. Реализация алгоритмов выбора и поиска BilliBong Помощь студентам 2 21.12.2011 01:59
Книга для ограниченного круга пользователей valerij Microsoft Office Excel 40 03.09.2010 01:14
Запуск ограниченного числа приложений Obsever0 Общие вопросы Delphi 2 26.07.2010 17:11
реализация выбора из списка yulkas Microsoft Office Access 5 25.03.2010 14:07
Реализация диалога выбора в Бизнес Пак Grandistok Общие вопросы Delphi 1 09.02.2010 22:32