
- •Спеціальність: Програмування для еом та ат
- •Практичне заняття №1
- •Контрольні запитання
- •Практичне заняття №2
- •Варіанти завдання
- •Задача 2.1.
- •Задача 2.2.
- •Задача 2.3.
- •Можливi помилки при виконаннi роботи
- •Практичне заняття №3
- •Варіанти завдань
- •Практичне заняття №4
- •Контрольнi питання
- •Варіанти завдань
- •Методичнi вказiвки та можливi помилки при виконаннi роботи
- •Практичне заняття №5
- •Варіанти завдань
- •Приклад виконання одного з варiантiв роботи.
- •Можливi помилки при виконаннi роботи
- •Практичне заняття №6
- •Варіанти завдань
- •Практичне заняття №7
- •Варіанти завдання
- •Практичне заняття №8
- •Варіанти завдань
- •I фактичних годин по категорiях працiвникiв
- •I фактичних годин по категорiях працiвникiв
- •Можливi помилки при виконаннi завдання
Практичне заняття №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 питання
Бiблiотечнi функцiї по роботi з даними символьного типу.
Тип даних структура, масиви структур.
Бiблiотечнi функцiї по роботi з файлами. Режими вiдкриття файлiв. Запис в файл. Читання з файлу. Перемiщення в файлi. Функцiя feof().