Смекни!
smekni.com

Язык программирования С 3 (стр. 4 из 5)

gotoxy(2,6);

cout<<"ESC - выход из программы";

}

//отображение всех записей

void OutAllData(){

window(1,1,80,50);

textbackground(1);

clrscr();

textbackground(3);

window(10,5,70,45);

clrscr();

textcolor(0);

gotoxy(2,2); cout<<"№";

gotoxy(5,2); cout<<"Фамилия";

gotoxy(25,2); cout<<"Пн.";

gotoxy(30,2); cout<<"Вт.";

gotoxy(35,2); cout<<"Ср.";

gotoxy(40,2); cout<<"Чт.";

gotoxy(45,2); cout<<"Пт.";

gotoxy(50,2); cout<<"Сб.";

for(int i=0;i<=Recs;i++){

gotoxy(2,2+2+i); cout<<i+1;

gotoxy(5,2+2+i); cout<<Izdelie[i].f;

gotoxy(25,2+2+i); cout<<Izdelie[i].izd[0];

gotoxy(30,2+2+i); cout<<Izdelie[i].izd[1];

gotoxy(35,2+2+i); cout<<Izdelie[i].izd[2];

gotoxy(40,2+2+i); cout<<Izdelie[i].izd[3];

gotoxy(45,2+2+i); cout<<Izdelie[i].izd[4];

gotoxy(50,2+2+i); cout<<Izdelie[i].izd[5];

}

gotoxy(2,2+2+1+i);

cout<<"Для возврата в основное меню нажмите любую клавишу.";

getch();

}

//Общее количество деталей за неделю

void sumIzdelies(){

window(1,1,80,50);

textbackground(1);

clrscr();

textbackground(3);

window(10,5,70,45);

clrscr();

textcolor(0);

gotoxy(2,2); cout<<"№";

gotoxy(5,2); cout<<"Фамилия";

gotoxy(25,2); cout<<"Общее количество деталей за неделю";

for(int i=0;i<=Recs;i++){

gotoxy(2,2+2+i); cout<<i+1;

gotoxy(5,2+2+i); cout<<Izdelie[i].f;

int sum=0;

for (int j=0;j<6;j++){

sum+=Izdelie[i].izd[j];

}

gotoxy(25,2+2+i); cout<<sum;

}

gotoxy(2,2+2+1+i);

cout<<"Для возврата в основное меню нажмите любую клавишу.";

getch();

}

//Определение сбощика и наибольших значений

void Sborshik(){

window(1,1,80,50);

textbackground(1);

clrscr();

textbackground(3);

window(10,10,70,40);

clrscr();

textcolor(0);

//наибольшее количество изделий

unsigned int max1=0; unsigned int max2=0;

for(int i=0;i<=Recs;i++){

int sum=0;

for (int j=0;j<6;j++){

sum+=Izdelie[i].izd[j];

}

if (sum>max1) max1 = sum;

}

//в какой день наибольшее количество изделий

for(i=0;i<=Recs;i++){

int sum=0;

for (int j=0;j<6;j++){

sum+=Izdelie[i].izd[j];

}

if (sum == max1){

max2 = Izdelie[i].izd[0];

for (int j=1;j<6;j++)

if (Izdelie[i].izd[j]>max2) max2=Izdelie[i].izd[j];

}

}

//отображение найденых значений

int c=0;

for(i=0;i<=Recs;i++){

int sum=0;

for (int j=0;j<6;j++){

sum+=Izdelie[i].izd[j];

}

if (sum == max1){

gotoxy(2,2+c);

cout<<"Наиболшее число изделий у: "<<Izdelie[i].f;

gotoxy(32,2+c);

cout<<"День: ";

int d=0;

for (int j=0;j<6;j++)

if (Izdelie[i].izd[j] == max2){

gotoxy(38+d*4,2+c);

if (j==0){

cout<<"Пн.";

++d;

}else if (j==1){

cout<<"Вт.";

++d;

}else if (j==2){

cout<<"Ср.";

++d;

}else if (j==3){

cout<<"Чт.";

++d;

}else if (j==4){

cout<<"Пт.";

++d;

}else if (j==5){

cout<<"Сб.";

++d;

}

}

++c;

}

}

gotoxy(2,2+1+c);

cout<<"Для возврата в основное меню нажмите любую клавишу.";

getch();

}

//код основной программы

void main(){

clrscr();//очистка экрана

textmode(64);// задание тектового режима 80x50 (ширина х высота)

OutMenu();//вывод основного меню

Recs = rData("izdeliya.dat");//чтение данных из файла если таковой имеется

while((ch=getch())!=0x1B){

switch(ch){

case '1': AddRec(Iz);

Izdelie[Recs] = Iz;

break;

case '2': OutAllData();

break;

case '3': sumIzdelies();

break;

case '4': Sborshik();

break;

}

clrscr();

OutMenu();

}

wData("izdeliya.dat"); //запись данных в файл

}

10. Тестирование программы

1.Вывод меню.

2.Ввод записей.

3.Отображение всех записей.

4.Общее количество деталей за неделю

5.Определение сборщика и наибольших значений


Зак

лючение.

В результате проделанной работы была разработана программа задач о сборщиках и сборщика собравшего наибольшее число изделий за неделю. Программа состоит из двух модулей, которые обеспечивают создание файла, его считывание, обработку файла по условию, вывод данных на экран. Программное средство разработано в среде программирования С++. В процессе написания программы я более подробно изучил раздел программирования на С++ и получил дополнительные навыки.

Список использованной литературы
.

1.Франка П. С++: учебный курс, Питер,2001-528 с.

2. Герберт Шилдт. Самоучитель С++, 3-е издание. Санкт-Петербург 1998-688 с.

3. И.Г. Семакин: Основы программирования: Учебник-Мастерство, 2002 г-432 с.

4. Бондарев В.М. Программирование на С++. 2-е изд. -Харьков: “Компания СМИТ”,2005.-284 с.

5.С/С++.Программирование на языке высокого уровня /Т.А.Павловская .- СПб.:Питер,2003.-461 с.: ил.

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

#include <iostream.h>

#include <conio.h>

#include <stdio.h>

#include <string.h>

const N = 30; //максимальное количество возможных записей

//запись

struct TIzdelie{

char f[30]; //фамилия

unsigned int izd[6];//количество изделий собраных ежидневно

} Iz,Izdelie[N];

char ch; //анализируемый символ

int Recs; //последняя введенная запись

//чтение данных из файл fname, возврщает количество считанных данных

int rData(char *fname){

FILE *f;

int i=-1;

if ((f=fopen(fname,"r"))!=NULL){

i=0;

while(!feof(f)){

fscanf(f,"%15s",Izdelie[i].f);

fscanf(f,"%6d",&Izdelie[i].izd[0]);

fscanf(f,"%6d",&Izdelie[i].izd[1]);

fscanf(f,"%6d",&Izdelie[i].izd[2]);

fscanf(f,"%6d",&Izdelie[i].izd[3]);

fscanf(f,"%6d",&Izdelie[i].izd[4]);

fscanf(f,"%6d",&Izdelie[i].izd[5]);

fscanf(f,"&bsol;n");

++i;

}

--i;

fclose(f);

}

return i;

}

//запись данных в файл fname

void wData(char *fname){

FILE *f;

if (Recs>=0){

f = fopen(fname,"w");

for(int i=0;i<=Recs;i++){

fprintf(f,"%15s",Izdelie[i].f);

fprintf(f,"%6d",Izdelie[i].izd[0]);

fprintf(f,"%6d",Izdelie[i].izd[1]);

fprintf(f,"%6d",Izdelie[i].izd[2]);

fprintf(f,"%6d",Izdelie[i].izd[3]);

fprintf(f,"%6d",Izdelie[i].izd[4]);

fprintf(f,"%6d",Izdelie[i].izd[5]);

fprintf(f,"&bsol;n");

}

fclose(f);

}

}

//добавление записи

void AddRec(TIzdelie &r){

window(1,1,80,50);

textbackground(1);

clrscr();

textbackground(3);

window(10,20,70,30);

clrscr();

textcolor(0);

if(Recs == N-1){

gotoxy(2,2);

cout<<"Вы ввели максимальное количество записей.";

gotoxy(2,3);

cout<<"Для возврата в основное меню нажмите любую клавишу.";

getch();

} else {

gotoxy(2,2);

cout<<"Фамилия: "; cin>>r.f;

gotoxy(2,3);

cout<<"Количество изделий за понедельник: "; cin>>r.izd[0];

gotoxy(2,4);

cout<<"Количество изделий за вторник: "; cin>>r.izd[1];

gotoxy(2,5);

cout<<"Количество изделий за среду: "; cin>>r.izd[2];

gotoxy(2,6);

cout<<"Количество изделий за четверг: "; cin>>r.izd[3];

gotoxy(2,7);

cout<<"Количество изделий за пятницу: "; cin>>r.izd[4];

gotoxy(2,8);

cout<<"Количество изделий за субботу: "; cin>>r.izd[5];

gotoxy(2,10);

cout<<"Для возврата в основное меню нажмите любую клавишу.";

getch();

++Recs;

}

}

//вывод меню

void OutMenu(){

window(1,1,80,50);

textbackground(1);

clrscr();

textbackground(3);

window(20,20,60,30);

clrscr();

textcolor(0);

gotoxy(2,2);

cout<<"1 - ввод данных";

gotoxy(2,3);

cout<<"2 - отображение всех данных";

gotoxy(2,4);

cout<<"3 - общее колличество изделий на неделю";

gotoxy(2,5);

cout<<"4 - наибольшее количество изделий";

gotoxy(2,6);

cout<<"ESC - выход из программы";

}

//отображение всех записей

void OutAllData(){

window(1,1,80,50);

textbackground(1);

clrscr();

textbackground(3);

window(10,5,70,45);

clrscr();

textcolor(0);

gotoxy(2,2); cout<<"№";

gotoxy(5,2); cout<<"Фамилия";

gotoxy(25,2); cout<<"Пн.";

gotoxy(30,2); cout<<"Вт.";

gotoxy(35,2); cout<<"Ср.";

gotoxy(40,2); cout<<"Чт.";

gotoxy(45,2); cout<<"Пт.";

gotoxy(50,2); cout<<"Сб.";

for(int i=0;i<=Recs;i++){

gotoxy(2,2+2+i); cout<<i+1;

gotoxy(5,2+2+i); cout<<Izdelie[i].f;

gotoxy(25,2+2+i); cout<<Izdelie[i].izd[0];

gotoxy(30,2+2+i); cout<<Izdelie[i].izd[1];

gotoxy(35,2+2+i); cout<<Izdelie[i].izd[2];

gotoxy(40,2+2+i); cout<<Izdelie[i].izd[3];

gotoxy(45,2+2+i); cout<<Izdelie[i].izd[4];

gotoxy(50,2+2+i); cout<<Izdelie[i].izd[5];

}

gotoxy(2,2+2+1+i);

cout<<"Для возврата в основное меню нажмите любую клавишу.";

getch();

}

//Общее количество деталей за неделю

void sumIzdelies(){

window(1,1,80,50);

textbackground(1);

clrscr();

textbackground(3);

window(10,5,70,45);

clrscr();

textcolor(0);

gotoxy(2,2); cout<<"№";

gotoxy(5,2); cout<<"Фамилия";

gotoxy(25,2); cout<<"Общее количество деталей за неделю";

for(int i=0;i<=Recs;i++){

gotoxy(2,2+2+i); cout<<i+1;

gotoxy(5,2+2+i); cout<<Izdelie[i].f;

int sum=0;

for (int j=0;j<6;j++){

sum+=Izdelie[i].izd[j];

}

gotoxy(25,2+2+i); cout<<sum;

}

gotoxy(2,2+2+1+i);

cout<<"Для возврата в основное меню нажмите любую клавишу.";

getch();

}

//Определение сбощика и наибольших значений

void Sborshik(){

window(1,1,80,50);

textbackground(1);

clrscr();

textbackground(3);

window(10,10,70,40);

clrscr();

textcolor(0);

//наибольшее количество изделий

unsigned int max1=0; unsigned int max2=0;

for(int i=0;i<=Recs;i++){

int sum=0;

for (int j=0;j<6;j++){

sum+=Izdelie[i].izd[j];

}

if (sum>max1) max1 = sum;

}

//в какой день наибольшее количество изделий

for(i=0;i<=Recs;i++){

int sum=0;

for (int j=0;j<6;j++){

sum+=Izdelie[i].izd[j];

}

if (sum == max1){