Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЗАВДАННЯ_ПРАКТИКА_СІ.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
338.43 Кб
Скачать

Практичне заняття №8

Розв'язок економiчних завдань на мовi Сi.

Мета завдання - реалiзацiя економiчних завдань на мовi Сi з використанням масивiв структур.

Приклад 1 - програма створення вiдомостi

/*pобота з масивом стpуктуp*/

/*запис у файл res.txt*/

#include <stdio.h>

#include <string.h>

#include <float.h>

FILE *stream;

struct wid { char wyr[2];

char od[3];

float cina;

int p1,p2,p3;

};

main ()

{ struct wid mas[10];

int i=0,q,n,a2,a3,a4;

float s1,s=0,a1;

char w[2],o[3];

stream=fopen("res.txt","w");

do { puts("вводьте данi");

puts("вирiб");

scanf("%s",&w);

strcpy(mas[i].wyr,w);

puts("одиниця вимiру");

scanf("%s",&o);

strcpy(mas[i].od,o);

puts("цiна");

scanf("%f",&a1);

mas[i].cina=a1;

puts("покупка 1");

scanf("%d",&mas[i].p1);

puts("покупка 2");

scanf("%d",&mas[i].p2);

puts("покупка 3");

scanf("%d",&mas[i].p3);

i++;

puts("для продовження 0");

scanf("%d",&q);

}

while (q==0);

fputs("-----------------------------------------------------------------\n",stream);

fputs("вирiб:один: цiна :рiчна поставка по договору:

сума :\n",stream);

fputs(" :вим :за один :--------------------------: :\n",stream);

fputs(" : : :пок 1 :пок 2 :пок 3 : :\n",stream);

fputs("------------------------------------------------------------------\n",stream);

fputs(" 1 : 2 : 3 : 4 : 5 : 6 : :\n",stream);

fputs("------------------------------------------------------------------\n",stream);

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

{

strcpy(w,mas[n].wyr);

strcpy(o,mas[n].od);

fprintf(stream,"%2s ",w);

fprintf(stream,"%4s ",o);

a1=mas[n].cina;

fprintf(stream,"%7.2f",a1);

fprintf(stream," %8d %8d %8d",mas[n].p1,mas[n].p2,mas[n].p3);

a1=mas[n].cina;

a2=mas[n].p1;

a3=mas[n].p2;

a4=mas[n].p3;

s1=a1*(a2+a3+a4);

s+=s1;

fprintf(stream,"%14.2f\n",s1);

};

fputs("----------------------------------------------------------\n",stream);

fprintf(stream,"%-6s ","всього");

fprintf(stream,"%52.2f\n",s);

fclose(stream);

}

Приклад 2 - запис у файл, читання з файлу, створення вiдомостi з пiдсумками двох рiвнiв. Запис результату в результатний файл.

/*запис у файл res1.txt*/

/*запис i читання файлу d.txt*/

#include <stdio.h>

#include <string.h>?

#include <float.h>

FILE *stream2,*stream;

struct wid { char wyr[1];

char od[3];

float cina;

int p1,p2,p3;

};

main ()

{ struct wid mas;

int q,a2=0,a3=0,a4=0;

float s1,s=0,a1=0,spr=0;

char w[2],o[3],w1[1];

stream2=fopen("d.txt","w+b");

stream=fopen("res1.txt","w");

do { puts("вводьте данi");

puts("вирiб");

scanf("%s",&w);

strcpy(mas.wyr,w);

fprintf(stream2,"\n%s",w);

puts("одиниця вимiру");

scanf("%s",&o);

strcpy(mas.od,o);

fprintf(stream2,"\n%s",o);

puts("цiна");

scanf("%f",&a1);

mas.cina=a1;

fprintf(stream2,"\n%f",a1);

puts("покупка 1");

scanf("%d",&mas.p1);

fprintf(stream2,"\n%d",mas.p1);

puts("покупка 2");

scanf("%d",&mas.p2);

fprintf( stream2,"\n%d",mas.p2);

puts("покупка 3");

scanf("%d",&mas.p3);

fprintf(stream2,"\n%2d",mas.p3);

puts("для продовження 0");

scanf("%d",&q);

}

while (q==0);

fseek(stream2,0,SEEK_SET);

fscanf(stream2,"%s",&w1);

fseek(stream2,0,SEEK_SET);x04

fputs("------------------------------------------------------------------\n",stream);

fputs("вирiб:один: цiна :рiчна поставка по договору: сума :\n",stream);

fputs(" :вим :за один :--------------------------: :\n",stream);

fputs(" : : :пок 1 :пок 2 :пок 3 : :\n",stream);

fputs("------------------------------------------------------------------\n",stream);

fputs(" 1 : 2 : 3 : 4 : 5 : 6 : :\n",stream);

fputs("------------------------------------------------------------------\n",stream);

do { if (feof(stream2))

{fprintf(stream,"%-4s %2s","по",w1);

fprintf(stream,"%52.2f\n",spr);

s+=spr;

break;

}

fscanf(stream2,"%s",&w);

if (strcmp(w,w1))

{ fprintf(stream,"%-4s %2s","по",w1);

fprintf(stream,"%52.2f\n",spr);

s+=spr;

spr=0;

strcpy(w1,w);

}

fscanf(stream2,"%s",&o);

fprintf(stream,"%2s ",w);

fprintf(stream,"%4s ",o);

fscanf(stream2,"%f",&a1);

fprintf(stream,"%7.2f",a1);

fscanf(stream2,"%d",&a2);

fscanf(stream2,"%d",&a3);

fscanf(stream2,"%3d",&a4);

fprintf(stream," %8d %8d %8d",a2,a3,a4);

s1=a1*(a2+a3+a4);

spr+=s1;

fprintf(stream,"%14.2f\n",s1);

}

while (1);

fputs("----------------------------------------------------------\n",stream);

fprintf(stream,"%-6s ","всього");

fprintf(stream,"%52.2f\n",s);

fclose(stream2);

fclose(stream);

}

Приклад 3 - на основi створеного у попередньому прикладi файлу даних - створення вiдомостi з пiдсумками 2-х рiвнiв i вивiд її на друк.

/*запис у файл d.txt i читання файлу*/

/*створення вiдомостi з пiдсумками 2-х рiвнiв*/

/*та вивiд її на друк*/

#include <stdio.h>

#include <string.h>

#include <float.h>

FILE *stream2;

main ()

{ int a2=0,a3=0,a4=0;

float s1,s=0,a1,spr=0;

char w[2],o[3],w1[1];

/*вiдкриття файлу d.txt для читання у двiйковому режимi*/

stream2=fopen("d.txt","rb");

fseek(stream2,0,SEEK_SET);

fscanf(stream2,"%s",&w1);

/*перехiд на початок файлу*/

fseek(stream2,0,SEEK_SET);x04

fputs("------------------------------------------------------------------\n",stdprn);

fputs("вирiб:один: цiна :рiчна поставка по договору: сума :\n",stdprn);

fputs(" :вим :за один :--------------------------: :\n",stdprn);

fputs(" : : :пок 1 :пок 2 :пок 3 : :\n",stdprn);

fputs("------------------------------------------------------------------\n",stdprn);

fputs(" 1 : 2 : 3 : 4 : 5 : 6 : :\n",stdprn);

fputs("------------------------------------------------------------------\n",stdprn);

do { if (feof(stream2))

{fprintf(stdprn,"%-4s %2s","по",w1);

fprintf(stdprn,"%52.2f\n",spr);

s+=spr;

break;

}

fscanf(stream2,"%s",&w);

if (strcmp(w,w1))

{ fprintf(stdprn,"%-4s %2s","по",w1);

fprintf(stdprn,"%52.2f\n",spr);

s+=spr;

spr=0;

strcpy(w1,w);

}

fscanf(stream2,"%s",&o);

fprintf(stdprn,"%2s ",w);

fprintf(stdprn,"%4s ",o);

fscanf(stream2,"%f",&a1);

fprintf(stdprn,"%7.2f",a1);

fscanf(stream2,"%d",&a2);

fscanf(stream2,"%d",&a3);

fscanf(stream2,"%3d",&a4);

fprintf(stdprn," %8d %8d %8d",a2,a3,a4);

s1=a1*(a2+a3+a4);

spr+=s1;

fprintf(stdprn,"%14.2f\n",s1);

}

while (1);

fputs("-------------------------------------------------------\n",stdprn);

fprintf(stdprn,"%-6s ","всього");

fprintf(stdprn,"%52.2f\n",s);

fclose(stream2);

}

Контрольнi питання

  1. Бiблiотечнi функцiї по роботi з даними символьного типу.

  2. Тип даних структура, масиви структур.

  3. Бiблiотечнi функцiї по роботi з файлами. Режими вiдкриття файлiв. Запис в файл. Читання з файлу. Перемiщення в файлi. Функцiя feof().