Форум программистов, компьютерный форум CyberForum.ru

Можете сделать линейчатую диаграмму,а то не выходит вовсе - C++

Восстановить пароль Регистрация
 
Slavos
0 / 0 / 0
Регистрация: 03.02.2014
Сообщений: 16
17.06.2014, 23:52     Можете сделать линейчатую диаграмму,а то не выходит вовсе #1
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <malloc.h>
#include <clocale>

using namespace std;
using namespace System;
using namespace System::IO;

#define UP 72
#define DOWN 80
#define ESC 27
#define ENTER 13

int menu(int n);
void dobavlenie();
void pechat();
void maxcena();
void mincena();
void zakazi_po_clientam();
void diagramma();

const char M[][55] = {
" Заказы по клиентам ",
" Печатать заказы ",
" Найти самый дешевый заказ ",
" Найти самый дорогой заказ ",
" Диаграмма* ",
" Выход "};
char BlankLine[ ]="Выберите что-нибудь и нажмите ENTER";
int NC;

void main()
{
int i;
int nomer;

Console::ForegroundColor=ConsoleColor::Red;
Console::BackgroundColor=ConsoleColor::Blue;
Console::Clear();
Console::CursorLeft=14;
Console::CursorTop=2;
{
FILE *f;
int n,i;
char fio[20];
char data [11];
char zakaz[20];
long int cena;

setlocale(LC_CTYPE,"Russian");
Console::CursorVisible::set(false);
Console::BufferHeight=Console::WindowHeight;
Console::BufferWidth=Console::WindowWidth;
f=fopen("zakazi.dat","r");
fscanf(f,"%d",&n);
for(i=0;i<n;i++)
{
fscanf(f,"%s%s%s%ld",fio,data,zakaz,&cena);
Console::CursorLeft=4;
Console::CursorTop=2.5+i;
cprintf("%s %s %s %ld",fio,data,zakaz,cena);
}
_getch();
}
do{
Console::ForegroundColor=ConsoleColor::Blue;
Console::BackgroundColor=ConsoleColor::Green;
Console::Clear();
Console::CursorLeft=25;
Console::CursorTop=4;
printf(BlankLine);

Console::ForegroundColor=ConsoleColor::Green;
Console::BackgroundColor=ConsoleColor::Black;
Console::Clear();

for (i=0;i<6;i++)
{
Console::CursorLeft=2;
Console::CursorTop=2+i;
cprintf("%s",M[i]);
}

nomer=menu(6);

Console::ForegroundColor=ConsoleColor::Blue;
Console::BackgroundColor=ConsoleColor::Green;
Console::Clear();
Console::CursorLeft=20;
Console::CursorTop=4;
cprintf("Для продолжения нажмите любую клавишу");

Console::ForegroundColor=ConsoleColor::Green;
Console::BackgroundColor=ConsoleColor::Black;

Console::Clear();
switch(nomer)
{
case 1: zakazi_po_clientam(); break;
case 2: pechat();break;
case 3: mincena();break;
case 4: maxcena();break;
case 5: diagramma();break;
}
} while(nomer!=6);
}


char clients[20][20];
int col_zakazov[20];
long sums[20];
int count;
long int summa;

int find_client(char *s)
{
int i;
for(i=0;i<count;i++)
if(strcmp(s,clients[i])==0)
return i;
return -1;
}

void calculate()
{
int n,i,k;
char fio[20];
char data[11];
char zakaz[20];
long int cena;

FILE *f = fopen("zakazi.dat","r");
fscanf(f,"%d",&n);

count=0;
summa=0;

for (i=0;i<n;i++)
{
fscanf(f,"%s%s%s%ld",fio,data,zakaz,&cena);
summa+=cena;

k = find_client(fio);
if (k==-1)
{
strcpy(clients[count],fio);
col_zakazov[count]=1;
sums[count]=cena;
count++;
}
else
{
col_zakazov[k]++;
sums[k]+=cena;
}
}
fclose(f);
}

void diagramma()
{
int driver=9,mode=2;
int color=9,fill=1;
int i;
char str[20];
double ugol,start,alpha;
int xt,yt;
System::ConsoleColor Color;
calculate();

start=0;

for(i=0;i<count;i++)
{
Color=ConsoleColor::Black; NColor=0;
setfillstyle(fill,color);
bar(330,50+i*10,340,55+i*10);

Console::BackgroundColor=ConsoleColor::White;
settextjustify(LEFT_TEXT,TOP_TEXT);
outtextxy(350,50+i*10,clients[i]);

ugol=360*sums[i]/(double)summa;
Console::BackgroundColor=ConsoleColor::Black;
pieslice(200,250,start,start+ugol,100);

sprintf(str,"%0.1lf%%",100.0*sums[i]/summa);
alpha=start+ugol/2;
xt=200+floor(120*cos(alpha*3.14*2/360)+0.5);
yt=250-floor(120*sin(alpha*3.14*2/360)+0.5);
Console::BackgroundColor=ConsoleColor::Green;
settextjustify(CENTER_TEXT,CENTER_TEXT);
outtextxy(xt,yt,str);

start+=ugol;
color++;
if(color==16)
{
color=9;
fill++;
}
}

_getch();
}

void zakazi_po_clientam()
{
int i;

calculate();

clrscr();
Console::CursorLeft=4;
Console::CursorTop=2;
cprintf(" ФИО Кол-во заказов Общая сумма*");
for(i=0;i<count;i++)
{
Console::CursorLeft=4;
Console::CursorTop=4+i;
cprintf("%s",clients[i]);
Console::CursorLeft=20;
Console::CursorTop=4+i;
cprintf("%5d %20ld",col_zakazov[i],sums[i]);
}
_getch();
}

void pechat()
{
FILE *f;
int n,i;
char fio[20];
char data[11];
char zakaz[20];
long int cena;

Console::Clear();
f=fopen("zakazi.dat","r");
fscanf(f,"%d",&n);
for(i=0;i<n;i++)
{
fscanf(f,"%s%s%s%ld",fio,data,zakaz,&cena);
Console::CursorLeft=4;
Console::CursorTop=2.5+i;
cprintf("%s %s %s %ld",fio,data,zakaz,cena);
}
fclose(f);
getch();
}

void mincena()
{
FILE *f;
int n,i;
char fio[20];
char data[11];
char zakaz[20];
long int cena, min;

char minfio[20];
char mindata[11];
char minzakaz[20];

Console::Clear();
min=1000000;
f=fopen("zakazi.dat","r");
fscanf(f,"%d",&n);
for(i=0;i<n;i++)
{
fscanf(f,"%s%s%s%ld",fio,data,zakaz,&cena);
if (cena<min)
{
strcpy(minfio,fio);
strcpy(mindata,data);
strcpy(minzakaz,zakaz);
min=cena;
}
}
Console::CursorLeft=4;
Console::CursorTop=3;
cprintf("%s %s %s %ld",minfio,mindata,minzakaz,min);
fclose(f);
getch();
}

void maxcena()
{
FILE *f;
int n,i;
char fio[20];
char data[11];
char zakaz[20];
long int cena, max;

char maxfio[20];
char maxdata[11];
char maxzakaz[20];

Console::Clear();
max=0;
f=fopen("zakazi.dat","r");
fscanf(f,"%d",&n);
for(i=0;i<n;i++)
{
fscanf(f,"%s%s%s%ld",fio,data,zakaz,&cena);
if (cena>max)
{
strcpy(maxfio,fio);
strcpy(maxdata,data);
strcpy(maxzakaz,zakaz);
max=cena;
}
}
Console::CursorLeft=4;
Console::CursorTop=3;
cprintf("%s %s %s %ld",maxfio,maxdata,maxzakaz,max);
fclose(f);
_getch();
}

int menu(int n)
{
int y=0;
char c;

do {
Console::CursorLeft=2;
Console::CursorTop=2+y;
Console::ForegroundColor=ConsoleColor::Blue;
Console::BackgroundColor=ConsoleColor::White;
cprintf(M[y]);
c=getch();

Console::CursorLeft=2;
Console::CursorTop=2+y;
Console::ForegroundColor=ConsoleColor::Green;
Console::BackgroundColor=ConsoleColor::Black;
cprintf(M[y]);
switch(c)
{
case DOWN : y++; break;
case UP : y--; break;
case ENTER: return y+1;
}
if(y>n-1)y=0;
if(y<0)y=n-1;

} while (c!=ESC);
exit(0);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2014, 23:52     Можете сделать линейчатую диаграмму,а то не выходит вовсе
Посмотрите здесь:

C++ Можете немного подкорректировать код?
C++ завтра лабу сдавать.. сделать не успеваю.. Если время есть можете помочь?
Вот часть кода, в нем я должен сделать если я ничего не ввожу то чтоб вывело сообщение о том что пользователь не ввел данных, но у меня не выходит C++
C++ здравствуйте, можете объяснить?
C++ Помоги сделать по информатике задачу, что-то у меня ничего не выходит
C++ Можете проверить scanf/printf
C++ Не выходит сделать вычисление
C++ Это обьект, переменная или что? Как то вовсе непонятно

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 05:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru