Как сделать массив структур в си

Как сделать массив структур в си
Как сделать массив структур в си
Как сделать массив структур в си
Как сделать массив структур в си

//Borland C++ 3.1       Массив структур     Листинг #2

#include <iostream.h>

#include <windows.h>

#include <iomanip.h> //setw, setprecission

#include <string.h> //strlen

#include <conio.h> //clrscr

 

 

/ОПИСЫВАЕМАЯ СТРУКТУРА/

struct Shop

{

   char Name[70];

   float Cena;

   int count;

   char Prodav[50];

   char Pokup[50];

   char Date[11];

};

 

/ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ, ИЩУТ МАКСИМАЛЬНЫЕ СТРОКИ ДЛЯ КАЖДОЙ КОЛОНКИ/

int get_max_caption(Shop M, int N){

    int maximum = strlen(M[0].Name);

 

    int temp;

    for (int i=1; i<N; i++){

        temp = strlen(M[i].Name);

        if (temp > maximum) maximum = temp;

    }

    return maximum;

}

 

int get_max_prodav(Shop M, int N){

    int maximum = strlen(M[0].Prodav);

 

    int temp;

    for (int i=1; i<N; i++){

        temp = strlen(M[i].Prodav);

        if (temp > maximum) maximum = temp;

    }

    return maximum;

}

 

int get_max_pokup(Shop M, int N){

    int maximum = strlen(M[0].Pokup);

 

    int temp;

    for (int i=1; i<N; i++){

        temp = strlen(M[i].Pokup);

        if (temp > maximum) maximum = temp;

}

    return maximum;

}

/КОНЕЦ ВСПОМОГАТЕЛЬНЫХ ФУНКЦИЙ/

 

/ФУНКЦИЯ ОБЕСПЕЧИВАЕТ ВЫВОД ДАННЫХ НА ЭКРАН/

void ShowData(Shop M, int N)

{

        cout << "\n\n";

        cout << "INFORMATION\n";

 

        struct ColumnWidth{     //Вспомогательная структура поможет обрабатывать промежуточные данные

            int Name;

            int Prodav;

            int Pokup;

        } ColumnWidth;

        int temp;               //Переменная для хранения подходящей ширины

 

        /ПОДСЧЁТ НУЖНОЙ ШИРИНЫ КОЛОНКАМ/

        ColumnWidth.Name = strlen("НАЗВАНИЕ") + 1;

        temp = get_max_caption(M,N) + 1;

        if (ColumnWidth.Name < temp) ColumnWidth.Name = temp;

 

        ColumnWidth.Prodav = strlen("ПРОДАВЕЦ") + 1;

        temp = get_max_prodav(M,N) + 1;

        if (ColumnWidth.Prodav < temp) ColumnWidth.Prodav = temp;

 

        ColumnWidth.Pokup = strlen("ПОКУПАТЕЛЬ") + 1;

        temp = get_max_pokup(M,N) + 1;

        if (ColumnWidth.Pokup < temp) ColumnWidth.Pokup = temp;

        /КОНЕЦ РАСЧЁТА/

 

 

        /ЯЧЕЙКИ-ЗАГОЛОВКИ/

        cout << "НАЗВАНИЕ" << setw(ColumnWidth.Name - strlen("НАЗВАНИЕ")) << '|';

        cout << setw(10) << "ЦЕНА"   << '|';

        cout << "КОЛИЧЕСТВО" << setw(10 - strlen("КОЛИЧЕСТВО"))  << '|';

        cout << setw(ColumnWidth.Prodav) << "ПРОДАВЕЦ" <<  '|';

        cout << setw(ColumnWidth.Pokup) << "ПОКУПАТЕЛЬ" <<  '|';

        cout << setw(15) << "ДАТА" <<  '|';

         /КОНЕЦ ЯЧЕЕК-ЗАГОЛОВКОВ/

        cout << '\n';

 

        /ВЫВОДИМ МАССИВ СТРУКТУР ПОСТРОЧНО/

        for (int i=0; i<N; i++){

            cout << M[i].Name << setw(ColumnWidth.Name - strlen(M[i].Name) ) <<  '|';

 

             cout.width(10);

(cout << setprecision(2)  << M[i].Cena  <<  '|').width(10);

(cout << setprecision(2)  << M[i].count << '|').width(10);

 

             cout   << setw(ColumnWidth.Prodav) << M[i].Prodav   << '|';

             cout   << setw(ColumnWidth.Pokup) << M[i].Pokup  << '|';

 

             cout   << setw(15) << M[i].Date  << '|';

 

            cout << '\n';

        }

        /КОНЕЦ ПОСТРОЧНОГО ВЫВОДА/

 

       cout << '\n';

 

}

 

/ФУНКЦИЯ ЗАНОСИТ ДАННЫЕ В СТРУКТУРУ/

void GetData(Shop M,int N)

{

     for (int i=0;i<N;i++)

      {

        cout << "\n";

        cout << "НАЗВАНИЕ: ";

        cin.getline(M[i].Name,sizeof(M[i].Name));

 

        cout << "ЦЕНА: ";

        cin >> M[i].Cena;

        cin.ignore();

 

        cout << "Количество: ";

        cin >> M[i].count;

        cin.ignore();

 

        cout << "ПРОДАВЕЦ: ";

        cin.getline(M[i].Prodav,sizeof(M[i].Prodav));

 

        cout << "ПОКУПАТЕЛЬ: ";

        cin.getline(M[i].Pokup,sizeof(M[i].Pokup));

 

        cout << "ДАТА ";

        cin >> M[i].Date; cin.ignore();

      }

}

 

/ГЛАВНАЯ ФУНКЦИЯ/

int main()

{

 

clrscr();

      int N;

 

       cout << "Введите  N: ";

       (cin >> N).ignore();

 

      Shop M = new Shop[N];

        GetData(M,N);               //Ввод данных в массив структур

        ShowData(M,N);              //Вывод массива структур на экран

     delete []M;

 

 

    getch();

}

Как сделать массив структур в си Как сделать массив структур в си Как сделать массив структур в си Как сделать массив структур в си Как сделать массив структур в си Как сделать массив структур в си Как сделать массив структур в си Как сделать массив структур в си Как сделать массив структур в си Как сделать массив структур в си Как сделать массив структур в си

Тоже читают:



Как сделать иван чай из цветов

Философские поздравления маме

Как дома сделать слоеное тесто

Открытки с днем врача стоматолога

Галерея поздравительные открытки