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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2017, 00:11   #1
CortesGames
Пользователь
 
Аватар для CortesGames
 
Регистрация: 23.10.2016
Сообщений: 86
По умолчанию Не могу найти причину бага

Есть задача отсортировать масив введённый с клавиатуры, и есть несколько видов сортировки. И когда я ввёл масив, при выборе варианта сортировки, номер варианта, который также вводится с клавиатуры почему-то встаёт вместо последнего элемента уже введёного масива. Помогите найти и понять суть бага. Буду благодарен.
Код:
int main(){
	int alg;
	int data[9];
	cout<<"Input 10 elements: ";
	for(int i=0;i<10;i++){
		cin>>data[i];
	}
	cout<<"Your array: ";
	for (int i = 0; i< 10; i++) {
	    cout<<data[i]<<" ";
	}
	while(1){
		cout<<"\nWhich algorithm?\n1.Smooth sort\n2.Gnome sort\n3.Tree sort\n4.Shell sort\nYour choice: ";
		cin>>alg;
		for (int i = 0; i< 10; i++) {
	    	cout<<data[i]<<" ";
		}
		cout<<"\n";
		switch(alg){
			case 1:
				smoothsort(data,10);
				for (int i = 0; i< 10; i++) {
				    cout<<data[i]<<" ";
				}
				break;
			case 2:
			{
				gnome_sort(data,10);
				for (int i = 0; i< 10; i++) {
				    cout<<data[i]<<" ";
				}
				cout<<"\n";
				break;
			}
			case 3:
			{
				struct tnode *root = 0;
				for (int i = 0; i< 10; i++) {
				    root = addnode(data[i], root); 
				}
				treeprint(root);
				exit;
				break;
			}
			case 4:
			{
				sort_shell(data, 10);
				for (int i = 0; i< 10; i++) {
				    cout<<data[i]<<" ";
				}
				cout<<"\n";
				exit;
				break;
			}
			default:
				exit;
				break;
		}
	}
}
Насылаю баги по фотографии

преимущественно себе
CortesGames вне форума Ответить с цитированием
Старый 14.05.2017, 03:37   #2
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,336
По умолчанию

ты массив объявил на 9 элементов, а работаешь с 10 элементами
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 14.05.2017, 11:14   #3
CortesGames
Пользователь
 
Аватар для CortesGames
 
Регистрация: 23.10.2016
Сообщений: 86
По умолчанию

В масиве есть 10 елементов включая нулевой. Если я в вызовах функции поставлю 9 а не 10 то последний символ оно вообще трогать не будет, отсортирует только первые 9. Так что баг ещё не найден.
Насылаю баги по фотографии

преимущественно себе
CortesGames вне форума Ответить с цитированием
Старый 14.05.2017, 11:23   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Что за фантазии?
int data[9] создает массив из 9 элементов.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 14.05.2017, 11:47   #5
CortesGames
Пользователь
 
Аватар для CortesGames
 
Регистрация: 23.10.2016
Сообщений: 86
По умолчанию

data[0],data[1],data[2],data[3],data[4],data[5],data[6],data[7],data[8],data[9] Разве не так?
А то достаточно странно, что когда я вынес ввод в другую функцию, баг исчез, но сортируются все 10 елементов
Насылаю баги по фотографии

преимущественно себе
CortesGames вне форума Ответить с цитированием
Старый 14.05.2017, 11:48   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Нет.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 14.05.2017, 11:51   #7
CortesGames
Пользователь
 
Аватар для CortesGames
 
Регистрация: 23.10.2016
Сообщений: 86
По умолчанию

Тогда почему у меня сортируются 10 елементов а не 9?
Насылаю баги по фотографии

преимущественно себе
CortesGames вне форума Ответить с цитированием
Старый 14.05.2017, 12:08   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Потому что вы обращаетесь к памяти за пределами массива.
И так сложились звезды и настройки компилятора, что ничего не упало.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 14.05.2017, 13:25   #9
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от CortesGames Посмотреть сообщение
Разве не так
Ну вы бы сами пересчитали...
waleri на форуме Ответить с цитированием
Старый 16.05.2017, 15:11   #10
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,336
По умолчанию

Цитата:
Сообщение от CortesGames Посмотреть сообщение
В масиве есть 10 елементов включая нулевой. Если я в вызовах функции поставлю 9 а не 10 то последний символ оно вообще трогать не будет, отсортирует только первые 9. Так что баг ещё не найден.
понятно. т.е на руке у тебя 6 пальцев, включая нулевой? количество и индексация - разные вещи.
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помочь найти причину drzod Помощь студентам 1 28.02.2013 07:23
Не могу найти причину ошибки pastuhdima Помощь студентам 0 06.10.2011 00:24
Задача с матрицей. Не могу найти причину неправильной работы программы. Azzzza Общие вопросы C/C++ 1 28.04.2011 21:03
Задача с матрицей с++. Не могу найти причину неправильной работы программы. Azzzza Помощь студентам 12 27.04.2011 17:45
помогите найти причину ошибки! НиКС БД в Delphi 3 10.05.2007 15:55