Разработка и реализация на языке С/С++ информационно-поискового справочника «Фоторезисторы», страница 5

                   i + 1, arr[i].marka, arr[i].vid, arr[i].sopr, arr[i].chuvstv, arr[i].mosch);       

    for( i = 0; i < R; i++)

       printf("=");

    puts(""); 

    getchar();

}

10) Файл « sort_vst.c».

// Заголовочный файл

#include "foto.h"

void sort_vst( struct foto arr[] )

{

     // Переменные и структура-буфер\

     int j, k, s, x;

     struct foto t;

     if( podschet( arr ) == 0 )

        return;

     for( j = 1; j < CHISLO; j++ )

       for( k = 0; k < j; k++ )

       {

       // Функция strcmp() – посимвольное сравнение строк

               if( strcmp( arr[j].marka, arr[k].marka ) < 0 )

               {

                      t = arr[j];

                      for( s = j; s > k; s-- )

                              arr[s] = arr[s - 1];

                      arr[k] = t;

               }

       }

    // Перенос читстых записей в конец

    for( k = 0, j = 0; k < CHISLO; k++ )

       if( arr[k].marka[0] != '\0' )

       {

               t = arr[k];

               arr[k] = arr[j];

              arr[j] = t;

               j++;

       }

    // Данные после сортировки

    system("clear");   

    puts("\t\tСправочник \"Фоторезисторы\", отсортираванный");

    puts("\t\t\tпо марке в алфавитном порядке.\n");

    for( k = 0; k < R; k++)

       printf("=");

    puts("\n| N |    Марка  |  Вид фоторезистора   |Сопротивление|Чувствит. |  Мощность  |");

    puts("|   |           |                      |     кОм     |  А/Лм-В  | рассеян.,Wt|");

    for( k = 0; k < R; k++)

       printf("=");

    puts("");

    for( k = 0; k < CHISLO; k++)

       if( arr[k].marka[0] != '\0' )

            printf("|%3d| %-9s | %-20s | %11g | %8g | %10g |\n",

                   k + 1, arr[k].marka, arr[k].vid, arr[k].sopr, arr[k].chuvstv, arr[k].mosch);       

    for( k = 0; k < R; k++)

       printf("=");

    puts(""); 

    getchar();

}

11) Файл « chtenie.c».

// Заголовочный файл

#include "foto.h"

void chtenie( struct foto arr[], int i, char *argv[] )

{

    // Перемнные и файловый указатель

    char a;          

    char otkr[DLINA] = "\0";

    FILE *out;        

    int x = 0;

    system("clear");

    if( i >= 0 && argv[1] == '\0' )

    {

               puts("Введите и мя файла для открытия.");

               while( getchar() != '\n' )  continue;

               fgets( otkr, DLINA, stdin );

               /* Проверка ввода некорректнгых данных */

               while( otkr[0] == '\n' || otkr[0] == ' ' )

               {

                      puts("Ошибка при вводе имени файла.");

                      fgets( otkr, DLINA, stdin );

               }

              otkr[strlen( otkr ) - 1] = '\0';

              argv[1] = otkr;

    }

    // Открытие файла

    if( ( out = fopen( argv[1], "rb" ) ) == NULL )

    {

              fprintf(stderr, "Произошка ошибка при открытии указанного файла.\n");

              fprintf(stderr, "\'Q\' –выход из приложения.\t\'Enter\' - возврат.\n");

               a = getchar();

              if( a == 'q' || a == 'Q' )

                   exit( 1 );

               return;

    }

    // Чтение из файла

    fread( arr, sizeof( struct foto ), CHISLO, out );

    if( !out )

    {

              fprintf(stderr, " Произошка ошибка при открытии указанного файла.\n");

              fprintf(stderr, "\'Q\' –выход из приложения.\t\'Enter\' - возврат.\n");

              while( getchar() != '\n' )  continue;

               a = getchar();

               if( a == 'q' || a == 'Q' )