Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 03.09.2016
Сообщений: 17
1

Отсортировать столбцы в двумерном массиве, основываясь на значениях одного из столбцов

31.08.2017, 22:37. Показов 880. Ответов 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
34
35
#include <iostream>
#include <stdio.h>
using namespace std;
 
int main()
{ 
    typedef struct {
        char name[15];
        int pro;
        char color[7];
        int year;
    }car;
    car centr[4] = { {"Nissan",1000,"red",2008},
                    {"Subaru",15000,"blue",2015},
                    {"Lotus",40000,"black",2012},
                    {"Lada",25000,"grey",2001} };
    int i;
    printf("   марка       пробег       цвет   год\n");
    for (i = 0; i < 4; i++)
    {
            for (int j = 4 - 1; j > i; j--)
                if (centr[4].pro < centr[4 - i].pro)
                {
                    int tmp = centr[4].pro;
                    centr[4].pro = centr[4-i].pro;
                    centr[4 - i].pro = tmp;
                }
        
        printf("%15s\t%6d\t\t%8d\t%8d",
            centr[i].name, centr[i].pro, centr[i].color, centr[i].year);
        printf("\n");
    }
    system("pause");
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.08.2017, 22:37
Ответы с готовыми решениями:

Отсортировать в двумерном массиве четные столбцы по возрастанию
Отсортировать в двумерном массиве целых случайных числе четные столбцы по возрастанию .Можно...

Отсортировать в двумерном массиве целых случайных числе четные столбцы по возрастанию
Ребят, будьте добры помогите пожалуйста сделать задачу на Паскале Отсортировать в двумерном...

В двумерном массиве столбцы поставить в порядке возрастания максимальных элементов столбцов
program lab9; const n=4; m=4; var a:array of real; max:array of real; i,j,k,l:integer;...

Отсортировать столбцы в двумерном массиве по значению элементов первой строки методом Шелла
Подскажите пожалуйста как отсортировать столбцы в двумерном массиве по значению элементов первой...

7
1466 / 1174 / 551
Регистрация: 08.01.2012
Сообщений: 4,524
31.08.2017, 22:41 2
выводим в процессе сортировки, а не после?
0
0 / 0 / 0
Регистрация: 03.09.2016
Сообщений: 17
31.08.2017, 22:52  [ТС] 3
Забыл написать, отсортировать = вывести в порядке возростания пробега, my bad

Добавлено через 7 минут
я скорее хочу уточнить процес сортировки, так как учтя ваше замечание получился полный бред в итоге
0
1466 / 1174 / 551
Регистрация: 08.01.2012
Сообщений: 4,524
31.08.2017, 22:55 4
а до этого бреда не было? сравнивать/менять надо [i] [j], а не то безобразие
0
0 / 0 / 0
Регистрация: 03.09.2016
Сообщений: 17
31.08.2017, 23:35  [ТС] 5
Бред естественно был. Просто уточнил что хотел бы узнать)

Добавлено через 4 минуты
C++
1
2
3
4
for (int j = i - 1; j > i; j--)
                if (centr[i].pro < centr[i+1].pro)
                {
                    int tmp = car[i][j];
встал вопрос с тем как обозначить сам массив: и centr, и car подчеркивает и выдает ошибку
0
Рэмбо комнатный
102 / 102 / 99
Регистрация: 05.03.2017
Сообщений: 510
31.08.2017, 23:42 6
Лучший ответ Сообщение было отмечено legoroll как решение

Решение

Цитата Сообщение от legoroll Посмотреть сообщение
int tmp = car[i][j];
тут ты хочешь присвоить целочисленной переменной значение переменной типа car ?????

Добавлено через 3 минуты
а вообще вот тебе сортировка:
C++
1
2
3
4
5
6
7
8
9
10
for ( unsigned int i = 0 ; i < 4 - 1 ; i++ )
{
   for ( unsigned int j = i + 1 ; j < 4 ; j++ )
   {
      if ( centr[i].pro > centr[j].pro )
      { 
         swap(centr[i],centr[j]);
      }
   }
}
1
0 / 0 / 0
Регистрация: 03.09.2016
Сообщений: 17
01.09.2017, 00:22  [ТС] 7
Благодарю, даже не знал о существовании функции свап, да и с массивами этими помогли)
0
Рэмбо комнатный
102 / 102 / 99
Регистрация: 05.03.2017
Сообщений: 510
01.09.2017, 00:30 8
legoroll, ну можно и без него
C++
1
2
3
car temp=centr[i];
centr[i]=centr[j];
centr[j]=temp;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.09.2017, 00:30

В двумерном массиве отсортировать по убыванию элементы четных столбцов
1.Вычислить одномерный массив А, каждый элемент которого равен полусумме соответствующих элементов...

Напишите функцию, которая в данном двумерном массиве целых чисел ищет номер одного из столбцов
Напишите функцию, которая в данном двумерном массиве целых чисел ищет номер одного из столбцов, в...

Не меняются столбцы в двумерном массиве
Задача обменять 1 и 2 строку двумерного массива местами, и обменять столбцы с наибольшим и...

Обнулить столбцы в двумерном массиве
нужно чтобы обнуляло все столбцы, а обнуляет только один, как сделать? namespace task5 { ...

Удалить столбцы в двумерном массиве
дан двумерный массив удалить столбцы в которых первый элемент больше последнего

Заменить столбцы в двумерном массиве
Необходимо заменить столбец в двумерном массиве на столбец другого массива (метод Крамера). У меня...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru