1

Тема: Допоможіть будь ласка

Доброго вечора) Звертаюсь до вас за допомогою. У мене завдання стоїть таке. Дано такі відомості: марка авто, країна виробник, вартість. Вивести за зростанням вартості автомобілі які випускаються в країні К. (країна К вводиться з клавіатури)
Ось тут у мене є коду трошки. З усим розібрався, не можу розібратись з виводом автомобілів за зростанням вартоті. Прошу допомоги

#include "stdafx.h"
#include "windows.h"
#include "locale.h"
#define N 5
typedef struct Info
    {
        char nazv[20];
        char vurobn[10];
        int vart;
    }    avto;
    
void InfoZapys(avto *p);
void InfoVivod(avto *p);
void PoiskKraina(avto *arr, char *strana);

int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "RUS");
    int i,j,k,l;
    char strana[20];
    avto arr[N];
    //Вводимо в структуру
    for(i=0; i<N; i++)
        InfoZapys(&arr[i]);
    //Виводимо з структури
    puts("\t\tИнформация про авто");
    for(i=0; i<N; i++)
        InfoVivod(&arr[i]);
    //Вводим країну для пошуку
    printf("Введите страну для поиска\n");
    fflush(stdin);
    gets_s(strana);
    //Шукаємо авто з введеної країни
    printf("Информация про авто выбраной страны\n");
    PoiskKraina(arr, strana);
    //Сортуємо 
    printf("Отсортированная информация про авто выбраной страны\n");
    
    system("pause");
    return 0;
}
//------------------------------------------------------------------
void InfoZapys(avto *p)
{
    printf("Введите название автомобиля  ");
    fflush(stdin);
    gets_s(p->nazv);
    printf("Введите производителя автомобиля  ");
    fflush(stdin);
    gets_s(p->vurobn);
    printf("Введите стоимость автомобиля  ");
    fflush(stdin);
    scanf_s("%d",&(p->vart));
}
//------------------------------------------------------------------
void InfoVivod(avto *p)
{
    printf("%20s%10s%10d\n",p->nazv, p->vurobn, p->vart);
}
//------------------------------------------------------------------
void PoiskKraina(avto *arr, char *strana)
{
    int i,j;
    avto z;
    avto ary[N];
    for(i=0; i<N; i++)
        if((strcmp(arr[i].vurobn, strana)==0))
        {
            strcpy_s(ary[i].nazv, arr[i].nazv);
            strcpy_s(ary[i].vurobn, arr[i].vurobn);
            ary[i].vart=arr[i].vart;
            printf("%20s%10s%10d\n",ary[i].nazv, ary[i].vurobn, ary[i].vart);
        }
}
//-----------------------------------------------------------------

2

Re: Допоможіть будь ласка

Просто відсортуйте масив за зростанням вартості (можна повністю), тоді ті, що з потрібної країни, також відсортуються.
Якщо ж буде вимога потім вивести весь масив в початковому порядку, то краще робити індекс - масив номерів автомобілів в масиві, впорядкованих за потрібною ознакою.
Якщо не знаєте, як сортувати - https://uk.wikipedia.org/wiki/Сортування_бульбашкою

Подякували: snikers.mc, leofun012

3 Востаннє редагувалося snikers.mc (04.04.2016 20:02:17)

Re: Допоможіть будь ласка

Дякую, все вийшло)

Прихований текст

http://s020.сайт-злодій/i710/1604/31/11318dc76ddf.jpg

Подякували: koala1