
- •2 Завдання з програмування
- •2.1 Організація циклічного процесу
- •2.2 Поєднання циклу та розгалужень
- •Vvod_mas(n,a)
- •Int main(int argc, char* argv[])
- •2.3 Обробка масивів
- •2.4 Вкладені цикли в матричних задачах
- •Int main(int argc, char* argv[])
- •2.5 Обробка рядків
- •Int main(int argc, char* argv[])
- •2.6 Обробка файлів структурованих даних
- •Int main(int argc, char* argv[])
Int main(int argc, char* argv[])
{SetConsoleCP(1251);
SetConsoleOutputCP(1251);
char s[100],st1[100];
char *p;
int i,k=0;
cout<<"Введіть рядок:\n";
gets(s);
strcat(s," ");
strcpy(st1,s);
cout<<"\nСлова рядка: \n";
for(i=0;(p=strtok(!i?st1:NULL," '\n'"))!=NULL;i=1)
{k++;
puts(p);
}
cout<<"\nКількість слів: "<<k<<"\n";
getch();
return 0;
}
Результати виконання програми
Рисунок 2.5.2 – Вікно результатів роботи програми
2.6 Обробка файлів структурованих даних
Завдання: створити програму, яка б забезпечувала створення, перегляд, доповнення та вилучення даних з файлу, що містить інформацію про учнів в школі у вигляді: ім’я, прізвище, клас, рік навчання. Організувати пошук учнів, які мають однакове ім’я та прізвище і навчаються в одному клачсі.
Виконання завдання
Алгоритм рішення
П рограма рішення.
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
struct ant
{char im[30];
char fam[50];
char kls[2];
char rik[256];};
FILE *f,*g;
ant x;
//створення
void stv(void)
{ if ((f=fopen("x.dat","w"))==NULL)
{perror("Файл вже існує");
getch();
exit(1);}
cout<<"\nВведіть інформацію про учня:\n";
do
{cout<<"\nВведіть імя учня: ";
cin>>x.im;
cout<<"\nВведіть прізвище учня: ";
cin>>x.fam;
cout<<"\nВведіть клас: ";
cin>>x.kls;
cout<<"\nВведіть рік навчасння : ";
cin>>x.rik;
fwrite(&x,sizeof(x),1,f);}
while(getch()!=27);
fclose(f);}
//доповнення
void dod(void)
{ if ((f=fopen("x.dat","a"))==NULL)
{perror("Файл вже існує");
getch();
exit(1);}
cout<<"\nВведіть інформацію про учня:\n";
do
{cout<<"\nВведіть імя учня: ";
cin>>x.im;
cout<<"\nВведіть прізвище учня: ";
cin>>x.fam;
cout<<"\nВведіть клас: ";
cin>>x.kls;
cout<<"\nВведіть рік навчасння (буквами): ";
cin>>x.rik;
fwrite(&x,sizeof(x),1,f);}
while(getch()!=27);
fclose(f);}
//перегляд
void per(void)
{ if ((f=fopen("x.dat","r"))==NULL)
{perror("Файл вже існує");
getch();
exit(1);}
cout<<"\n Інформація про учня:\n";
while(fread(&x,sizeof(x),1,f)!=NULL)
{cout<<"\nімя учня: ";
cout<<x.im;
cout<<"\nпрізвище учня: ";
cout<<x.fam<<"\n";
cout<<"\nклас: ";
cout<<x.kls;
cout<<"\nрік навчасння (буквами): ";
cout<<x.rik;
getch();}
fclose(f);}
//вилучення
void del(void)
{ if ((f=fopen("x.dat","r"))==NULL)
{perror("Файл вже існує");
getch();
exit(1);}
if((g=fopen("x1.dat","w"))==NULL)
{perror("Файл вже існує");
getch();
exit(1);}
cout<<"\n Інформація про учнів: \n";
while(fread(&x,sizeof(x),1,f)!=NULL)
{cout<<"\nІмя учня: ";
cout<<x.im;
cout<<"\nПрізвище учня: ";
cout<<x.fam;
cout<<"\nКлас: ";
cout<<x.kls;
cout<<"\nРік навчасння (буквами): ";
cout<<x.rik;
getch();
cout<<"\n\n Вилучати(y/n)?";
if(getch()=='n') fwrite(&x,sizeof(x),1,g);}
fclose(f);
fclose(g);
unlink("x.dat");
rename("x1.dat","x.dat");}
void posh(void)
{ char s1[40],s2[50],s3[10];
if ((f=fopen("x.dat","r"))==NULL)
{perror("Файл вже існує");
getch();
exit(1);}
cout<<"\nВведіть імя для пошуку:";
cin>>s1;
cout<<"\nВведіть прізвище для пошуку:";
cin>>s2;
{cout<<"\nКлас: ";
cin>>s3;
while(fread(&x,sizeof(x),1,f)!=NULL)
if((strcmp(s1,x.im)==0)&&(strcmp(s2,x.fam)==0)&&(strcmp(s3,x.kls)==0))
cout<<"\nРік навчасння (буквами): ";
cout<<x.rik; }
getch();
}
#pragma argsused