• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Одномерный Массив

  • Автор темы makkksim
  • Дата начала
M

makkksim

создать одномерный массив, заполнить его случайными значениями, отсортировать массив по убыванию.
получилось вот что:

#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=10+rand()%90;
cout<<" "<<mas<<" ";}
cout<<"\n";
int temp;
for(i=0; i<15; i++)
{int max=mas;
int pos_max=i;
for(int j=i+1; j<15; j++)
{if(max<mas[j])
{max=mas[j];
pos_max=j;}
temp=mas;
mas=mas[pos_max];
mas[pos_max]=temp;}
cout<<" "<<mas<<" ";}

return 0;
}

но массив заполняется значениями и больше 90, а сортируются только первые 11 элементов.
 
R

rrrFer

но массив заполняется значениями и больше 90
Ну а как вы хотели?
mas=10+rand()%90; // генератор выдает число, вы берете остаток от деления на 90 (этот остаток меньше 90) и прибавляете к нему 10
// получается случайное число в диапазоне [10, 100]

, а сортируются только первые 11 элементов.
неправда, ничего не сортируется ))
rrrfer@linux-2oyq:~/project> ./main
92 60 98 95 64 76 26 93 33 36 33 95 35 82 64
98 92 60 95 64 76 26 93 33 36 33 95 35 82 64 rrrfer@linux-2oyq:~/project>

А все потому, что надо научиться правильно форматировать код. Я в вашем коде ничего читать вообще не смог.
Отформатировал:
Код:
#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]<<" ";
}
}
И вижу, что перестановку элемента с максимальным вы делаете до того, как найдете этот максимальный элемент. - за фигурную скобку надо перенести те 3 строки. где перестановка происходит. Но если писать фигурные скобки как попало - то ничего не видно и зрение портится.

Добавлено: Т.е вот так:
Код:
#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]<<" ";
}
}
Правильно
 
R

rrrFer

Прочитайте вот эту статью, например:
Каждый программист оформляет код так, как ему удобно, если пишет для себя.
По-любому, удобно когда код оформлен единообразно (не как попало).
Но есть стандарты, на оформление кода, в каждой конторе они свои (но есть популярные). Популярные стандарты поддерживаются средами разработки (такими как вижуал студия, нетбинс и т.п.).

В статье там автор неплохо описывает зачем это надо, но ссылок на популярные стандарты нет. Посмотрите например стандарт кодирования IBM:
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!