18553

Файловый ввод/вывод в языке ANSI C

Доклад

Информатика, кибернетика и программирование

Задача лабораторной работы состоит в практическом освоении работы с файлами, написание приложения по индивидуальному варианту.

Русский

2014-03-24

2.23 MB

7 чел.

Лабораторная работа № 7

по дисциплине “Языки программирования”

Файловый ввод/вывод

Цель работы

Целью данной лабораторной работы является изучение на практике основам работы с файлами в языке ANSI C.

Задача лабораторной работы

Задача лабораторной работы состоит в практическом освоении работы с файлами, написание приложения по индивидуальному варианту.

Задание

Модифицировать программу из лабораторной работы № 5 с учетом

следующих требований:

- Организовать ввод начального и конечного значений аргумента и параметра, количество шагов расчета функций G, F, Y в виде строк; использовать

функции преобразования из строки в число;

- Исключить из программы выбор пользователем функции, подлежащей расчету;

- Рассчитанные значения G, F, Y хранить в массиве структур;

- Организовать вывод результатов расчета.

Блок-схема основной программы и дополнительных функций и процедур

Составим схему программы

 

Листинг программы

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#include <conio.h>

#include <string.h>

#include <algorithm>

#include <fstream>

#include <iostream>

using namespace std;

const double PI = 3.14159265;

const int size_array = 100;

char Res[1024];

struct ArrValue {

 int ID;

 float Argument;

 float Ordinata;

   } ;

struct ArrValue ArrValue_G[size_array];

struct ArrValue ArrValue_F[size_array];

struct ArrValue ArrValue_Y[size_array];

struct ArrValue ArrValue_Temp[size_array];

void SaveToFile(struct ArrValue ArrValue_Temp[100], const char* FileName, int i_max)

{

 

 FILE *file;

 file = (FILE *)fopen(FileName, "w+");

 if ((file = fopen(FileName,"w")) == NULL)

 {

 printf("Error for opening File\n");

 exit(1);

 }

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

  {

   fprintf(file, "%i %f %f\n", ArrValue_Temp[i].ID, ArrValue_Temp[i].Argument, ArrValue_Temp[i].Ordinata);

  }

fclose(file);

 

 return;

}

void LoadFromFile(struct ArrValue ArrValue_Temp[100], const char* FileName)

{

 FILE *file;

 file = (FILE *)fopen(FileName, "rt");

 int i_max = 0;

 while( !feof(file) ) if ( fgetc(file) == '\n' ) i_max++;

 printf("Loaded Value from File: %s\n", FileName);

 clearerr(file);

 fseek(file,0,SEEK_SET);

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

  {

  fscanf(file, "%i %f %f\n", &ArrValue_Temp[i].ID, &ArrValue_Temp[i].Argument, &ArrValue_Temp[i].Ordinata);

  printf("%i %f %f\n", ArrValue_Temp[i].ID, ArrValue_Temp[i].Argument, ArrValue_Temp[i].Ordinata);

 }

 fclose(file);

 

 return;

}

float EnterDigit(char* Param ) //функция считывания введенных символов в память как числовых данных

{

 char*  mmm_string="\0";

 char   buf[30];

 _flushall();

 printf("Enter %s:", Param);

 scanf("%s",buf);

 _flushall();

 mmm_string = _strdup(buf);

 

 return atof(mmm_string);

}

void OutArr(int Cnt, float ArrVal[])

{

 

 char *buffer;

 int  decimal, sign;

 strcpy_s(Res,"Result: ");

 

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

 {

   buffer = _fcvt(ArrVal[i], 7, &decimal, &sign );

strcat_s(Res,buffer);

   strcat_s(Res," ");

 }

 printf("\n%s\n", Res);

 return;

}

void FindSub()

{

 

 char   buf[30];

 char* buff;

 _flushall();

 printf("Enter substr:");

 fgets(buf,30,stdin);

 _flushall();

 int cnt=0;

 buff = strdup(Res);

 int i=0;

 while (buf[i]!=NULL)

 {

   if (buf[i] == '\n')

   {

     buf[i] = '\0';

   }

   i++;

 }

 buff = strstr(buff+1,buf);

 while (buff!=NULL)

 {

   

   buff = strstr(buff+1,buf);

   cnt++;

 }

 printf("Find %d \n",cnt);

 return;

}

void f_G(float a, float x1, float x2, int k)

{

 printf("Calculation G\n");

 

 float G,gg;

 float ArrG[100];

 float x,dx;

 x = x1;

 dx = fabs((x2-x1)/k);

 int i = 0;

 do 

 {

   gg = 25 * a * a + 30 * a * x + 9 * x * x;

   if (gg != 0 )

   {

     G = 9 * (7 * a * a - 19 * a * x + 10 * x * x) / gg;

     

  ArrValue_G[i].ID = i;

  ArrValue_G[i].Argument = x;

     ArrValue_G[i].Ordinata = G;

  ArrG[i] = G;     

  i++;

   }

   x = x + dx;

 } while (x<x2);

 printf("******SUBMENU*******\n");

 OutArr(i, ArrG);

 FindSub();

 SaveToFile(ArrValue_G, "ArrValue_G.txt", i);

 memset (ArrValue_G, 0 , sizeof(ArrValue_G));

 

 return;

}

void f_F(float a, float x1,float x2, int k)

{

 printf("Calculation F\n");

 float F,ff;

 float ArrF[100];

 float x,dx;

 x = x1;

 dx = fabs((x2-x1)/k);

 int i = 0;

 do 

 {

     ff = 9 * a * a - 13 * a * x - 10 * x * x;

   

     F = cos(ff);

     ArrValue_F[i].ID = i;

  ArrValue_F[i].Argument = x;

     ArrValue_F[i].Ordinata = F;

  ArrF[i] = F;

     i++;

   

   x = x + dx;

 } while (x<x2);

 printf("******SUBMENU*******\n");

 OutArr(i, ArrF);

 FindSub();

 SaveToFile(ArrValue_F, "ArrValue_F.txt", i);

 memset (ArrValue_F, 0 , sizeof(ArrValue_F));

 return;

}

void f_Y(float a, float x1,float x2, int k)

{

 printf("Calculation Y\n");

 float Y,yy, yyy;

 float ArrY[100];

 float x,dx;

 x = x1;

 dx = fabs((x2-x1)/k);

 int i = 0;

 do 

 {

 yy = -80 * a * a - 46 * a * x + 21 * x * x + 1;

   

 if (yy >= 0)

   {

     Y = logf(yy)/logf(10.0);  

   

  ArrValue_Y[i].ID = i;

  ArrValue_Y[i].Argument = x;

     ArrValue_Y[i].Ordinata = Y;

  ArrY[i] = Y;

     i++;

   }

   x = x + dx;

 } while (x<x2);

 printf("******SUBMENU*******\n");

 OutArr(i, ArrY);

 FindSub();

 SaveToFile(ArrValue_Y, "ArrValue_Y.txt", i);

 memset (ArrValue_Y, 0 , sizeof(ArrValue_Y));

 return;

}

void vvod_dannih()

{

 

 int k;

 float a,x1,x2;

 

   system("cls");

printf("Program from Work with File. In/Out Value F, G, Y\n");

   

 a = EnterDigit("a");

     _flushall();

     x1 = EnterDigit("x1");

     _flushall();

     x2 = EnterDigit("x2");

     _flushall();

     do 

     {

       _flushall();

       printf("Enter K (< 100):");

       scanf_s("%d",&k);

     } while (k<0 || k>100);

     f_G(a,x1,x2,k);

     f_F(a,x1,x2,k);

     f_Y(a,x1,x2,k);

  return;                 

}

int main()

{

printf("Calculation (1) Array or load from file (2 or other) G,F,X ? \n");

 int ch;

ch = _getch();

 if ( ch != '1' )

   {

 LoadFromFile(ArrValue_G, "ArrValue_G.txt");

    LoadFromFile(ArrValue_F, "ArrValue_F.txt");

 LoadFromFile(ArrValue_Y, "ArrValue_Y.txt");

 system("pause");

 

  }

 vvod_dannih();

 system("pause");

 return 0;

}

Результаты работы

Нажатие клавиши с цифрой 1. Ввод/вывод данных

Нажатие клавиши с цифрой 2. При вызове функции загрузки с файла ( функция LoadFromFile)

На жестком диске в папке с исполняющим файлом при выполни функции SaveToFile появляются или обновляются значение в файлах массива структур


Проверка результатов работы программы

Выводы по работе

В ходе выполнения лабораторной работы я изучил особенности  написания  программы  на языке ANSI C, в основе которой лежит алгоритм структуры и  файловым ввод/вывод.


 

А также другие работы, которые могут Вас заинтересовать

81364. Відповідальність за невиконання рішення, що зобов’язує боржника виконати певні дії, та рішення про поновлення на роботі 22.33 KB
  89 Закону у разі невиконання без поважних причин у встановлений державним виконавцем строк рішення що зобовязує боржника виконати певні дії та рішення про поновлення на роботі державний виконавець виносить постанову про накладення штрафу на боржника фізичну особу від десяти до двадцяти неоподатковуваних мінімумів доходів громадян; на посадових осіб від двадцяти до сорока неоподатковуваних мінімумів доходів громадян; на боржника юридичну особу від сорока до шістдесяти неоподатковуваних мінімумів доходів громадян та встановлює новий...
81365. Звільнення майна боржника з-під арешту, зняття арешту 27.57 KB
  Особа яка вважає що майно на яке накладено арешт належить їй а не боржникові може звернутися до суду з позовом про визнання права на майно і про звільнення майна зпід арешту. У разі прийняття судом рішення про звільнення майна зпід арешту або сплати боржником повної суми боргу за виконавчим документом до реалізації арештованого майна боржника майно звільняється зпід арешту за постановою державного виконавця яка затверджується начальником відповідного органу державної виконавчої служби додаток 40 не пізніше наступного дня коли...
81366. Поняття виконавчого провадження та його місце в системі права України 24.12 KB
  Виконавче провадження це врегульовані законодавством України суспільні відносини що виникають і реалізуються в процесі примусового виконання між органами державної виконавчої служби і посадовими особами які здійснюють примусову реалізацію рішень ухвал постанов судових і несудових органів з одного боку та між особами котрі беруть участь у виконавчому провадженні і залучаються до проведення виконавчих дій з другого боку на підставах у спосіб та в межах встановлених законом. Закону України Про виконавче провадження визначає...
81367. Принципи виконавчого провадження : поняття, зміст та значення 30.61 KB
  Принципи виконавчого провадження це закріплені у правових нормах основні засади керівні положення які визначають організацію органів державної виконавчої служби зміст і спрямованість її діяльності правовий статус учасників виконавчого провадження. На підставі теоретичних положень аналізу чинного законодавства та практики його застосування можна виокремити такі принципи виконавчого провадження: принцип гуманізма полягає у тому що заборонено у будьякій формі посягати на права і свободи фізичних осіб які беруть участь у виконавчому...
81368. Поняття, сутність та елементи правовідносин у виконавчому провадженні 28.23 KB
  Правовідносини у виконавчому провадженні виникають між державним виконавцем з одного боку та іншими субєктами виконавчого провадження стягувачем боржником з іншого. До ознак правовідносин що виникають у виконавчому провадженні слід віднести такі: вони виникають при примусовому виконанні рішень судів та інших юрисдикційних органів та регламентовані законодавством про виконавче провадження; без волі стягувана фізичної або юридичної особи державний виконавець не має права відкривати виконавче провадження. У випадку звернення...
81369. Суб’єкти виконавчого провадження та їх класифікація 25.45 KB
  Субєкти виконавчого провадження субєкти виконавчих правовідносин учасники виконавчого провадження це носії процесуальних прав та обовязків у виконавчому провадженні. Закону учасниками виконавчого провадження є державний виконавець сторони представники сторін прокурор експерти спеціалісти перекладачі субєкти оціночної діяльності субєкти господарювання. Прокурор бере участь у виконавчому провадженні у випадку здійснення представництва інтересів громадянина або держави в суді та відкриття виконавчого провадження на підставі...
81370. Органи і посадові особи Державної виконавчої служби, їх правове становище та повноваження 24.9 KB
  Органами державної виконавчої служби є: Департамент державної виконавчої служби Міністерства юстиції України до складу якого входить відділ примусового виконання рішень; управління державної виконавчої служби Головного управління юстиції Міністерства юстиції України в Автономній Республіці Крим головних управлінь юстиції в областях містах Києві та Севастополі до складу яких входять відділи примусового виконання рішень; районні районні у містах міські міст обласного значення міськрайонні відділи державної виконавчої служби відповідних...
81371. Державний виконавець як обов’язковий суб’єкт виконавчого провадження, його обов’язки та права 29.09 KB
  Державний виконавець у процесі здійснення виконавчого провадження має право: проводити перевірку виконання боржниками рішень що підлягають виконанню відповідно до цього Закону; здійснювати перевірку виконання юридичними особами всіх форм власності фізичними особами фізичними особами підприємцями рішень стосовно працюючих у них боржників; з метою захисту інтересів стягувача одержувати безоплатно від органів установ організацій посадових осіб сторін та учасників виконавчого провадження необхідні для проведення виконавчих дій...
81372. Роль суду у виконавчому провадженні 22.06 KB
  Роль суду у виконавчому провадженні є досить важливою і багатоаспектною. Це полягає в тому що суд не лише здійснює контроль у виконавчому провадженні але й вирішує цілий ряд питань виконавчого провадження. Специфіка судового контролю полягає в тому що він здійснюється лише при розгляді конкретної цивільної справи судом і лише у випадку звернення особи за захистом.