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

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

Войти
Регистрация
Восстановить пароль
 
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,927
Записей в блоге: 1
#1

Не правильно работает программа(Сортировка) - C++

22.11.2011, 08:57. Просмотров 340. Ответов 7
Метки нет (Все метки)

Помогите понять почему не правильно работает сортировка в этой программе
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
#include <iostream>
using namespace std;
int main()
{
   int m[1000];
   int n;
   int i;
   int temp;
   cout << "Enter the number of elements" << endl;
   cin >> n;
   for (i=0; i<n; i++)
   {       
       
       cout << "a[" << i << "]=  ";
       cin >> m[i];
       
       for (int j=0; j<n-1; j++)
           if(m[j]>m[j+1])
           {
              temp = m[j];
              m[j] = m[j+1];
              m[j+1] = m[j];
           
           }
 
   }
   cout << "Sort" << endl;  
   for (i=0; i<n; i++)
       cout << m[i];
 
    system("pause");
    return 0;
}
Ввожу числа 85 102 36 74 5, а выводит на экран числа -0,0859984454.
Вроде бы код правильный

Скрин на программу:
Не правильно работает программа(Сортировка)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2011, 08:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не правильно работает программа(Сортировка) (C++):

Правильно ли работает программа? - C++
Программа должна определить маршрут заданной длины из заданной вершины. Но я сомневаюсь в ее правильной работе. Посоветуйте и покритикуйте!...

Не правильно работает программа - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main() { unsigned long int v=299792,S1,S2; ...

Не правильно работает программа - C++
Написал программу но она чего то не правильно работает вот код: #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; using...

Программа работает не правильно - C++
Задача:Найти среди 10 русских существительных отглагольные(типа хождение) и вывести их. AnsiString A; AnsiString B; int C; int...

Почему программа не работает правильно? - C++
У меня почему-то не корректно отображаются надписи в консоли.

Программа не всегда работает правильно - C++
Всем добрый вечер. Реализовал программу, подсчитывающую корень уравнения методом касательных(Ньютона). В качестве примера использовал...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
asd321
Мохаммед Али
127 / 65 / 1
Регистрация: 14.08.2009
Сообщений: 916
22.11.2011, 09:04 #2
C++
1
2
3
   temp = m[j];
                          m[j] = m[j+1];
                          m[j+1] = m[j];
что за фигня это может вы так хотели написать?
C++
1
2
3
   temp = m[j];
                          m[j] = m[j+1];
                          m[j+1] = temp;
0
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,927
Записей в блоге: 1
22.11.2011, 09:08  [ТС] #3
Цитата Сообщение от asd321 Посмотреть сообщение
C++
1
2
3
   temp = m[j];
                          m[j] = m[j+1];
                          m[j+1] = m[j];
что за фигня это может вы так хотели написать?
C++
1
2
3
   temp = m[j];
                          m[j] = m[j+1];
                          m[j+1] = temp;
Исправил все равно результат выводит такие цифры -0,369541

Вот код исправленный
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
#include <iostream>
using namespace std;
int main()
{
   int m[1000];
   int n;
   int i;
   int temp;
   cout << "Enter the number of elements" << endl;
   cin >> n;
   for (i=0; i<n; i++)
   {       
       
       cout << "a[" << i << "]= ";
       cin >> m[i];
       
       for (int j=0; j<n-1; j++)
           if(m[j]>m[j+1])
           {
              temp = m[j];
              m[j] = m[j+1];
              m[j+1] = temp;
           
           }
 
   }
   cout << "Sort" << endl;  
   for (i=0; i<n; i++)
       cout << m[i];
 
    system("pause");
    return 0;
}
0
Thinker
Эксперт C++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
22.11.2011, 09:17 #4
Этот код и не будет работать, потому что за один проход по массиву методом пузырька нельзя отсортировать массив. Вот:

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>
using namespace std;
int main()
{
   int m[1000];
   int n;
   int i;
   int temp;
   cout << "Enter the number of elements" << endl;
   cin >> n;
   for (i=0; i<n; i++)
   {       
           
           cout << "a[" << i << "]= ";
           cin >> m[i];
   }
   for (i=0; i<n; i++)
   {       
           for (int j=0; j<n-1; j++)
                   if(m[j]>m[j+1])
                   {
                      temp = m[j];
                          m[j] = m[j+1];
                          m[j+1] = temp;
                   
                   }
 
   }
   cout << "Sort" << endl;  
   for (i=0; i<n; i++)
           cout << m[i];
 
    system("pause");
        return 0;
}
0
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,927
Записей в блоге: 1
22.11.2011, 09:20  [ТС] #5
Цитата Сообщение от Thinker Посмотреть сообщение
Этот код и не будет работать, потому что за один проход по массиву методом пузырька нельзя отсортировать массив. Вот:

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>
using namespace std;
int main()
{
   int m[1000];
   int n;
   int i;
   int temp;
   cout << "Enter the number of elements" << endl;
   cin >> n;
   for (i=0; i<n; i++)
   {       
           
           cout << "a[" << i << "]= ";
           cin >> m[i];
   }
   for (i=0; i<n; i++)
   {       
           for (int j=0; j<n-1; j++)
                   if(m[j]>m[j+1])
                   {
                      temp = m[j];
                          m[j] = m[j+1];
                          m[j+1] = temp;
                   
                   }
 
   }
   cout << "Sort" << endl;  
   for (i=0; i<n; i++)
           cout << m[i];
 
    system("pause");
        return 0;
}
а что ты исправил? вложий цикл убрал?
0
Thinker
Эксперт C++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
22.11.2011, 09:24 #6
Цитата Сообщение от Sylar9 Посмотреть сообщение
а что ты исправил? вложий цикл убрал?
Работает?
0
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,927
Записей в блоге: 1
22.11.2011, 09:28  [ТС] #7
Цитата Сообщение от Thinker Посмотреть сообщение
Работает?
ДА!!!!
0
Thinker
Эксперт C++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
22.11.2011, 09:30 #8
Цитата Сообщение от Sylar9 Посмотреть сообщение
ДА!!!!
Нельзя смешивать ввод массива с алгоритмом сортировки, черевато ошибками, что у вас и произошло, я просто вынес ввод массива за алгоритм сортировки и все.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2011, 09:30
Привет! Вот еще темы с ответами:

Программа работает не совсем правильно - C++
Вообщем вот условие. Создать класс, содержащий сведения о количестве изделий, собранный сборщиками цеха за неделю. Класс должен содержать...

Программа работает, не не совсем правильно... - C++
Напечатать вектор первых букв слова, которые начинаются и заканчиваются на указаный символ (т.е. надо вывести адрес строки и адреса первых...

Не могу проверить правильно ли работает программа! - C++
// ЛАБАРАТОРНАЯ4!!!.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot;// Подключение файла...

Программа на массив, работает правильно на половину - C++
Задание: нужно чтоб исходный массив отображался в обратном порядке(у меня в обратном порядке выдает только первые 5 элементов) ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.11.2011, 09:30
Ответ Создать тему
Опции темы

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