Задать вопрос

Как исправить ошибку при которой вызываются все кейсы в C++?

Нужно было создать прогу на C++ с возможностью редактирования и просмотра масива, при этом общение с пользователем происходило через меню. Но при выборе какого-то кейса происходит выполнение все кейсов указаных после него. Вот код :
#include <iostream>
#include <ctime>
using namespace std;

int main() {

	enum menu { random_numbers = 1, show = 2, up = 3, down = 4, search = 5 };
	const int size = 5;
	int array[size]{ 3,5,6,2,8 }, choise, start, end;
	srand(unsigned(time(0)));

	cout << " -------------Main menu-----------------" << endl;
	cout << "|1) Input random numbers into array\t|\n|2) Show elements of array\t\t|\n|3) Show elements in ascending order\t|\n|4) Show elements in descending order\t|\n|5) Search an element\t\t\t|\n ---------------------------------------\nAs usual entered this elements : 3  5  6  2  8\nYour choise : ";
	cin >> choise;

	switch (choise) {

		case 1:
			cout << "Enter start of random diapazone : ";
			cin >> start;
			cout << "Enter end of diapazone : ";
			cin >> end;
			
			for (size_t i = 0; i < size; i++)
			{
				array[i] = start + rand() % end;
			}
			
			cout << "Your array`s elements : ";
			for (size_t i = 0; i < size; i++)
			{
				cout << array[i] << "\t";
			}

		case 2:
			cout << "Your array`s elements : ";
			for (size_t i = 0; i < size; i++)
			{
				cout << array[i] << "\t";
			}

		case 3:
			int temp;
			for (int i = 0; i < size - 1; i++) {
				for (int j = 0; j < size - i - 1; j++) {
					if (array[j] > array[j + 1]) {
						
						temp = array[j];
						array[j] = array[j + 1];
						array[j + 1] = temp;
					}
				}
			}
			for (int i = 0; i < size; i++) {
				cout << array[i] << "\t";
			}

		case 4:
			for (int i = 0; i < size - 1; i++) {
				for (int j = 0; j < size - i - 1; j++) {
					if (array[j] < array[j + 1]) {

						temp = array[j];
						array[j] = array[j + 1];
						array[j + 1] = temp;
					}
				}
			}
			for (int i = 0; i < size; i++) {
				cout << array[i] << " ";
			}

		case 5:
			cout << "Enter value for search : " << endl;
			int value;
			cin >> value;
			int index = -1;

			for (size_t i = 0; i < size; i++)
			{
				if (array[i] == value) {
					index = i;
				}
			}

			if (index == -1) {
				cout << "Value " << value << " not found";
			}

			else {
				cout << "First of value " << value << " in index " << index << endl;
				for (int i = size - 1; i >= 0; i++) {
					if (array[i] == value) {
						index = i;
						break;
					}
				}
			}
	}
}


То есть при выборе пункта 1 проиходит выполнения пункта 1, 2, 3, 4 и 5. Скриншот прилагается.
6010319d8e3b7144717010.jpeg
  • Вопрос задан
  • 59 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
Надо использовать break:
switch(...)
{
case 1:
...
break;

case 2:
...
break;
}
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Тело оператора switch выполняется до завершающей фигурной скобки или до оператора break.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы