Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / одномерный массив / 5 сообщений из 5, страница 1 из 1
18.11.2013, 22:49
    #38469223
mak_710
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
одномерный массив
создать одномерный массив,

заполнить его случайными значениями,

отсортировать массив по убыванию.

получилось вот что:

Код: plaintext
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.
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <cstdlib>
#include <iomanip>

using namespace std;

int main()
{
  srand(time(NULL));
  int mas[15];
  int i;
  for(i=0; i<15; i++)
  {
    mas[i]=10+rand()%90;
    cout<<" "<<mas[i]<<" ";
  }
  cout<<"\n";
  int temp;
  for(i=0; i<15; i++)
  {
      int max=mas[i];
      int pos_max=i;
      for(int j=i+1; j<15; j++)
      {
          if(max<mas[j])
          {
                max=mas[j];
                pos_max=j;
          }
          temp=mas[i];
          mas[i]=mas[pos_max];
          mas[pos_max]=temp;
      }
      cout<<" "<<mas[i]<<" ";
  }
  return 0;
}



но массив заполняется значениями и больше 90, а сортируются только первые 11 элементов.
...
Рейтинг: 0 / 0
18.11.2013, 23:35
    #38469241
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
одномерный массив
mak_710,

rand()%90 приниммает значения от 0 до 89, а это выражение

10+rand()%90

, будучи смещённым на +10, от 10 до 99, соответственно.
...
Рейтинг: 0 / 0
18.11.2013, 23:42
    #38469245
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
одномерный массив
Вот тут ошибка.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
      for(int j=i+1; j<15; j++)
      {
          if(max<mas[j])
          {
                max=mas[j];
                pos_max=j;
          }
          temp=mas[i];
          mas[i]=mas[pos_max];
          mas[pos_max]=temp;
      }



"сортируются только первые 11 элементов. " -- это неверное утверждение. Оно вообще не сортируется.
...
Рейтинг: 0 / 0
19.11.2013, 00:49
    #38469270
mak_710
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
одномерный массив
MasterZiv, спасибо, помогло. нашел еще вариант: mas[i]=(10+rand())%90
...
Рейтинг: 0 / 0
19.11.2013, 00:52
    #38469273
mak_710
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
одномерный массив
MasterZiv, а здесь лишние скобки нашел

int temp;
for(i=0; i<15; i++)
{int max=mas[i];
int pos_max=i;
for(int j=i+1; j<15; j++)
if(max<mas[j])
{max=mas[j];
pos_max=j;}
temp=mas[i];
mas[i]=mas[pos_max];
mas[pos_max]=temp;
cout<<" "<<mas[i]<<" ";}
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / одномерный массив / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]