Задание
Для сведения составить программу построения графику изменения зарплаты работников за неделю.
Выбор алгоритма решения задачи
Выбор алгоритма решения задачи был именно таким поскольку, я считаю что он лучше подходит к условию задачи и есть последовательным и универсальным. Также есть легким для чтения и выполнения.
Схема алгоритма решения задачи
Функция add
Функция viev
Функция graf
Функция main
Текст программы
Текст Laba5.cpp
#Include "stdafx.h"
Void main(void)
{
int n=0; //переменная для количества рабочих
cout<<"vvedite kolichestvo robochih - ";
cin>>n; //здесь мы вводим количество рабочих
cout<<endl;
add(n);//функция заполнения структуры
cout<<"press any key to continue...\n";
getch();
view(n); //функция вывода таблицы на экран
cout<<"press any key to continue...\n";
getch();
graf(n);// функция рисования графику
getch();
}
Текст stdafx.cpp
#include "stdafx.h"
void add(int n) //функция ввода данных
{
int x,y,z; //переменные для работы программы
for (x=0;x<n;x++)
{
A[x].no=x+1;
cout<<"Vvedite fio "<<x+1<<"-go robochego - ";
cin>>A[x].fio; // Заполнение имени рабочего
cout<<"Vvedite professiu "<<x+1<<"-go robochego - ";
cin>>A[x].pro; // Заполнение профессии рабочего
z=0;
for (y=0;y<5;y++)
{
z++;
cout<<"Vvedite kolichestvo chasov dlia "<<x+1
<<"-go robochego za "<<z<<"-iu den - ";
cin>>A[x].B[y].ch; //ввод количества часов
A[x].B[y].zar=A[x].B[y].ch*56;
}
}
}
//////////////////////////////////////////////////////////////////////////
void view(int n)// Функция вывода таблицы на экран
{
if(n>1)
{
int x,y;
printf("-------------------------------------------------------------\n");
printf("| | | | Mo| Tu | We | Th | Fr |\n");
printf("| # | FIO |Profession| Ch|$ | Ch| $ | Ch| $ | Ch|$ | Ch| $ |\n");
printf("|---|---------|--------|------|------|------|------|---------|\n");
for(x=0;x<n;x++) //цикл вывода рабочих
{
printf("|%2d | %9s | %8s |",A[x].no,A[x].fio,A[x].pro);
for (y=0;y<5;y++)
printf("%2d |%4d |",A[x].B[y].ch,A[x].B[y].zar);
cout<<endl;
}
printf(" -----------------------------------------------------------\n\n");
}
else
cout<<"Ne zadano kolichestvo rabochih\n";
}
//////////////////////////////////////////////////////////////////////////
void graf(int n)// Функция построения графику
{
int x,y,a,b,p=1,max=0,s[][1]={0,0};
if(n>1)
{
for (x=0;x<n;x++)
{
s[x][0]=0;
for (y=0;y<5;y++)// Нахождение суммы зарплаты за неделю
s[x][0]=s[x][0]+A[x].B[y].zar;
}
for (x=0;x<n;x++)
{
if (max<s[x][0])// Нахождение наибольшей зарплаты за неделю
max=s[x][0];
}
while (max>20)// Нахождение делителя для получения числа меньше 20
{
max=max/2;
p=p*2;
}
for (x=0;x<n;x++)
s[x][0]=s[x][0]/p;// Пропорциональное деление зарплаты всех работников
b=max;
for (a=0;a<b;a++)
{
cout<<"| ";
for (x=0;x<n;x++)
{
if (s[x][0]<max)//если зарплата работника меньше максимальной
cout<<" ";// Вывод если меньше от максимальной
else
cout<<"****** ";// Вывод если больше от максимальной
}
cout<<endl;
max--;// Уменьшение максимального значения
}
cout<<" --------------------------------------------------------->\n ";
for (x=1;x<n+1;x++)
cout<<x<<"-iu ";
cout<<" - Rabotniki";
}
else
cout<<"Ne zadano kolichestvo rabochih\n";
}
Текст stdafx.h
#pragma once
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#include <stdio.h>// Подключение библиотек
#include <tchar.h>
#include <iostream>
#include <conio.h>
using namespace std;
struct // Объявление структуры как без измеримого массива
{
int no;
char fio[9],pro[8];
struct
{
int ch,zar;
}B[5];
}A[]={0};
// Прототипы функций
void add(int n);
void view(int n);
void graf(int n);
Результаты работы программы