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

Сортировка выбором (метод прямого выбора). Ошибка в задаче - C++

Восстановить пароль Регистрация
 
dimoncheg
 Аватар для dimoncheg
10 / 10 / 2
Регистрация: 18.10.2012
Сообщений: 220
24.02.2014, 17:45     Сортировка выбором (метод прямого выбора). Ошибка в задаче #1
Привет. У меня есть программка решение на задачку "Первые десять элементов массива М(30) отсортировать в порядке возрастания, а остальные в порядке убывания." В задаче два условия. Одно - сортируем первые 10, а второе - остальные. Так вот. Одно из них нужно сделать методом пузырька, а другое - методом прямого выбора. Во втором коде я попытался сделать двумя способами.. Что не так? Пожалуйста, подскажите.

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
#include <iostream>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
 
using namespace std;
 
int main ()
{
    const int size= 30;
    int a[size];
    srand(time(NULL));
    
    for (int i = 0; i < size; i++)
       a[i] = rand() % 100;
       
    for (int i = 0; i < size; i++)
       cout << a[i] << "  ";
       
    for (int i = 0; i < size; i++)
       for (int j = i+1; j < size; j++)
       
      if (a[i] > a[j] & i<10)
      {
         int buf = a[i];
         a[i] = a[j];
         a[j] = buf;
      }
      
      for (int i = 0; i < size; i++)
       for (int j = i+1; j < size; j++)
       
      if (a[i] < a[j] & i>=10)
      {
         int buf = a[i];
         a[i] = a[j];
         a[j] = buf;
      }
 
      
   cout << endl << endl;
    for (int i = 0; i < size; i++)
       cout << a[i] << "  ";
    getch();
    return 0;
}
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
#include <iostream>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
 
using namespace std;
 
int main ()
{
    const int size= 30;
    int a[size];
    srand(time(NULL));
    
    for (int i = 0; i < size; i++)
       a[i] = rand() % 100;
       
    for (int i = 0; i < size; i++)
       cout << a[i] << "  ";
       
    for (int i = 0; i < size; i++)
       for (int j = i+1; j < size; j++)
       
      if (a[i] > a[j] & i<10)
      {
         int buf = a[i];
         a[i] = a[j];
         a[j] = buf;
      }
      
for(int i = 0; i < size; ++i) 
    { 
        int pos = i; 
        tmp = arr[i];
        for(int j = i + 1; j < size; ++j) 
        {
            if (arr[j] < tmp) 
           {
               pos = j; 
               tmp = arr[j]; 
           }
        }
        arr[pos] = arr[i]; 
        arr[i] = tmp; 
    }
      
   cout << endl << endl;
    for (int i = 0; i < size; i++)
       cout << a[i] << "  ";
    getch();
    return 0;
}
Добавлено через 25 минут
upup
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Amandosov
Знаток
156 / 156 / 65
Регистрация: 18.11.2012
Сообщений: 411
Записей в блоге: 2
24.02.2014, 18:44     Сортировка выбором (метод прямого выбора). Ошибка в задаче #2
Цитата Сообщение от dimoncheg Посмотреть сообщение
for(int i = 0; i < size; ++i)
* * {
* * * * int pos = i;
* * * * tmp = arr[i];
* * * * for(int j = i + 1; j < size; ++j)
* * * * {
* * * * * * if (arr[j] < tmp)
* * * * * *{
* * * * * * * *pos = j;
* * * * * * * *tmp = arr[j];
* * * * * *}
* * * * }
* * * * arr[pos] = arr[i];
* * * * arr[i] = tmp;
* * }
Замени for на это
C++
1
for(int i = 10; i < size; ++i)
dimoncheg
 Аватар для dimoncheg
10 / 10 / 2
Регистрация: 18.10.2012
Сообщений: 220
24.02.2014, 19:05  [ТС]     Сортировка выбором (метод прямого выбора). Ошибка в задаче #3
Amandosov, спасибо, упустил это! А вот сейчас две ошибки выдает:

33 9 C:\Users\Пользователь\Desktop\4.cpp [Error] 'tmp' was not declared in this scope
33 15 C:\Users\Пользователь\Desktop\4.cpp [Error] 'arr' was not declared in this scope

Не знаю что делать. Вроде пространство имен есть, и в иостриме без h. А в чем дело?
Amandosov
Знаток
156 / 156 / 65
Регистрация: 18.11.2012
Сообщений: 411
Записей в блоге: 2
24.02.2014, 19:25     Сортировка выбором (метод прямого выбора). Ошибка в задаче #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
1) надо объявить переменную: int tmp;
2) заменить аrr[...] на a[...]
dimoncheg
 Аватар для dimoncheg
10 / 10 / 2
Регистрация: 18.10.2012
Сообщений: 220
24.02.2014, 19:44  [ТС]     Сортировка выбором (метод прямого выбора). Ошибка в задаче #5
Amandosov, спасибо! по-больше бы таких отзывчивых и понимающих людей как Вы
P.S кстати, в 36 строчке нужно было еще знак сменить (правильно: if (a[j] > tmp) ), а то по возрастанию шло.
Yandex
Объявления
24.02.2014, 19:44     Сортировка выбором (метод прямого выбора). Ошибка в задаче
Ответ Создать тему
Опции темы

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