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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Ironhide7
0 / 0 / 0
Регистрация: 01.06.2012
Сообщений: 17
#1

Вывод результата работы программы ввиде таблицы - C++

05.06.2012, 20:24. Просмотров 931. Ответов 8
Метки нет (Все метки)

Я сделал вывод работы программы ввиде таблицы с помощью setw. Но при выводе длинных слов или больших чисел вся таблица сбивается. Подскажите как лучше сделать.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
# include<string.h>
# include<iomanip.h>
# include <stdio.h>
# include <conio.h>
# include <iostream.h>
 
FILE *f; int i; int z,q,A,B,min,X;int k; const n=3; char S;  char h[1000];
 
struct magazine
    {
     char name[10];
     char strana[30];
     int chena;
     int kolvo;
     int vothrast_ot;
     int vothrast_do;
    };
 
magazine shop[n];
 
int FF;
 
void outputmenu();
 
void vvod_dannix() ;
 
void ot_1_do_3();
void deh_igr();
void poisk();
void dannie();
 
void main()
{
do{
outputmenu();
gotoxy(5,8);
cout<<" ‚лЎЁаЁвҐ Їг*Єв: ";
cin>>FF;
 clrscr();
  switch(FF)
     { case 1: vvod_dannix();  break;
       case 2: ot_1_do_3(); break;
       case 3: deh_igr(); break;
       case 4: poisk(); break;
       case 5: dannie(); break;
       default: ;
} } while(FF!=6);
 
 
}
 
 
void outputmenu()
{ int ff; char gg;
textcolor(GREEN);
textbackground(GREEN);
window(1,1,80,24);
 clrscr();
 window(2,3,79,23);
 textbackground(0);
 clrscr();
 gotoxy(5,2);
printf("1) ‚ўҐ¤ЁвҐ ¤***лҐ ®Ў *б®авЁ¬Ґ*вҐ");
gotoxy(5,3);
printf("2) ?ЈагиЄЁ ¤«п ¤ҐвҐ© ®в 1 ¤® 3 «Ґв ");
gotoxy(5,4);
printf("3) ‘*¬*п ¤ҐиҐў*п ЁЈагиЄ*");
gotoxy(5,5);
printf("4) Џ®ЁбЄ ®ЇаҐ¤Ґ«Ґ**®© ЁЈагиЄЁ");
gotoxy(5,6);
printf("5) ‚뢥бвЁ ** нЄа** ўҐбм *бб®авЁ¬Ґ*в");
gotoxy(5,7);
printf("6) ‚л室");
}
 
 
void vvod_dannix()
{
printf("‚ўҐ¤ЁвҐ **§ў**ЁҐ д*©«*: "); scanf("%s",h);
if((f=fopen("h.txt","w"))==NULL)
{puts("ЌҐ¬®Јг ®вЄалвм д*Ё«!\n"); return;}
clrscr();
 
for(i=0; i<n; i++)
{   gotoxy(5,2);
    printf("¤«п ўл室* ў Ј«*ў*®Ґ ¬Ґ*о  **¦¬ЁвҐ ESC ¤«п Їа®¤®«¦Ґ*Ёп  **¦¬ЁвҐ Enter");
    if(getch()==27)  {i=n;outputmenu();}
    else
    {gotoxy(5,4);
    printf("Ќ*§ў**ЁҐ:"); scanf("%s", &shop[i].name);
    gotoxy(5,5);
    printf("‘ва***:"); scanf("%s", &shop[i].strana);
    gotoxy(5,6);
    printf("–Ґ**:"); scanf("%d", &shop[i].chena);
    gotoxy(5,7);
    printf("Љ®«ЁзҐбвў®:"); scanf("%d", &shop[i].kolvo);
    gotoxy(5,8);
    printf("‚®§а*бв_®в:"); scanf("%d", &shop[i].vothrast_ot);
    gotoxy(5,9);
    printf("‚®§а*бв_¤®:"); scanf("%d", &shop[i].vothrast_do);
    clrscr();
fwrite(&shop,sizeof(struct magazine),1,f);}}
fclose(f);
 }
 
 
 
 
void ot_1_do_3()
{
f=fopen("h.txt","r");
while(1){if(!fread(&shop,sizeof(struct magazine),1,f)){printf("end");break;}
}
q=0;
printf("\n\n\n ?ЈагиЄЁ ᮮ⢥вбвўгойЁҐ ў®§а*бвг ®в 1 ¤® 3 : \n");
for (i=0;  i<n; i++)
{if((shop[i].vothrast_ot>=1)&&(shop[i].vothrast_do<=3))
      printf("**§ў**ЁҐ:%s,бва***:%s,жҐ**:%d,Є®«ЁзҐбвў®:%d,ў®§а*бв ®в:%d, ў®§а*бв ¤®:%d\n",shop[i].name,shop[i].strana,shop[i].chena,shop[i].kolvo,shop[i].vothrast_ot, shop[i].vothrast_do);
  else q++; }
if(q==n) printf(" *Ґв ЁЈагиЄЁ ᮮ⢥вбвўго饩 ¤***®¬г ў®§а*бвг");
 
getch();
}
 
 
void deh_igr()
{
min=32766;
q=0;
for (i=0; i<n; i++)
{if(shop[i].chena<min) {min=shop[i].chena; q=i;}}
printf("\n\n б*¬*п ¤ҐиҐў*п ЁЈагиЄ* **§ў**ЁҐ: %s, бва***: %s, жҐ**: %d",shop[q].name,shop[q].strana,min);
getch();
}
 
 
void poisk()
{
printf ("\nЏ®ЁбЄ ЁЈагиЄЁ\n\n");
printf(" ўўҐ¤ЁвҐ **з*«м*®Ґ §**зҐ*ЁҐ ў®§а*бв*:");
scanf("%d",&A);
printf(" \nўўҐ¤ЁвҐ Є®*Ґз*®Ґ §**зҐ*ЁҐ ў®§а*бв*:");
scanf("%d",&B);
printf(" \nўўҐ¤ЁвҐ жҐ*г X:");
scanf("%d",&X);
printf(" ўўҐ¤ЁвҐ бва**г:");
scanf("%s",&S);
printf("\n\n१г«мв*в Ї®ЁбЄ*:\n");
clrscr();
for (q=i=0; i<n; i++)
{ if ((shop[i].vothrast_ot>=A)&&(shop[i].vothrast_do<=B ) &&(shop[i].chena<X)&&(strcmp(shop[i].strana,&S)==0))
    printf("\t**§ў**ЁҐ:%s\n",shop[i].name);
    else   q++;
    }
    if(i==q) printf("?ЈагиЄ* *Ґ **©¤Ґ**");
getch();
}
 
 
 
void dannie()
{q=1;z=4;
 f=fopen("h.txt","rt");
while(1){if(!fread(&shop,sizeof(struct magazine),1,f)){printf(" ");break; }
 }
gotoxy(2,1);
printf("**¦¬ЁвҐ ENTER ¤«п Їа®б¬®ва* б«Ґ¤го饩 з*бвЁ бЇЁбЄ* ЁЈаг襪");
gotoxy(2,2);
cout<<setw(11)<<"Ќ*§ў**ЁҐ"<<setw(13)<<"‘ва***"<<setw(13)<<"–Ґ**"<<setw(13)<<"Љ®«-ў®"<<setw(16)<<"‚®§а*бв ®в"<<setw(11)<<"‚®§а*бв ¤®";
gotoxy(2,3);
cout<<"----------------------------------------------------------------------------";
for(i=0; i<n; i++)
{
 
gotoxy(2,z);
cout<<setw(7)<<shop[i].name;
cout<<setw(7)<<"|";
cout<<setw(8)<<shop[i].strana;
cout<<setw(8)<<"|";
cout<<setw(7)<<shop[i].chena;
cout<<setw(6)<<"|";
cout<<setw(7)<<shop[i].kolvo;
cout<<setw(6)<<"|";
cout<<setw(6)<<shop[i].vothrast_ot;
cout<<setw(5)<<"|";
cout<<setw(5)<<shop[i].vothrast_do<<endl;
gotoxy(2,++z);
cout<<"----------------------------------------------------------------------------";
if(q%5==0)
{
  getch()==13;
  clrscr();
  z=3;
  gotoxy(2,1);
  printf("**¦¬ЁвҐ ENTER ¤«п Їа®б¬®ва* б«Ґ¤го饩 з*бвЁ бЇЁбЄ* ЁЈаг襪");
  gotoxy(2,2);
  cout<<setw(11)<<"Название"<<setw(14)<<"Страна"<<setw(11)<<"Цена"<<setw(11)<<"Кол-во"<<setw(14)<<"Возраст от"<<setw(14)<<"Возраст до";
  gotoxy(2,3);
  cout<<"----------------------------------------------------------------------------";
} q++; z+=2;
}
fclose(f);
getch();
 
 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2012, 20:24     Вывод результата работы программы ввиде таблицы
Посмотрите здесь:
C++ Вывод результата работы программы
Вывод данных ввиде таблицы C++
C++ Вывод данных ввиде таблицы
Вывод результата в виде таблицы C++
При выводе результата работы программы пишет #QNAN0 C++
Вывести на экран числа ввиде следующей таблицы C++
Вычислить и вывести на экран ввиде таблицы значения функции F на интервале от Хнач. до Хкон. с шагом dX C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alt_Shift
50 / 50 / 2
Регистрация: 28.05.2012
Сообщений: 161
05.06.2012, 20:30     Вывод результата работы программы ввиде таблицы #2
Код бы заключили в тег [ CPP][/CPP] аитабельнее же будет. Кнопочка [IMG]http://s019.***********/i637/1206/6c/c8d4b5b75cb6.jpg[/IMG]
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
06.06.2012, 15:35     Вывод результата работы программы ввиде таблицы #3
как вариант можно посмотреть на это:
Вывести текст в виде таблицы
http://liveworkspace.org/code/e53f12...27a9627817c09d
Ironhide7
0 / 0 / 0
Регистрация: 01.06.2012
Сообщений: 17
06.06.2012, 15:52  [ТС]     Вывод результата работы программы ввиде таблицы #4
конечно спасибо толька код гиганский , сразу не разберешься. А можно уточнить где именно производится вывод и прорисовка таблицы
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
06.06.2012, 16:00     Вывод результата работы программы ввиде таблицы #5
функция PrintTable получает список колонок и стрим, куда все нужно вывести.
внутри идет расчет ширыни колонки в зависимости от длин строк. ширина колонки равна длинне максимальной строки в колонке + еще пробелы по краям + возможно еще что-то. я не помню. все что нужно сделать - это заполнить колонки строками и вызвать эту функцию. в main как раз и идет такое формирование колонок и в конце - вызов PrintTable
BF_KARATEL
11 / 11 / 0
Регистрация: 01.06.2012
Сообщений: 114
06.06.2012, 16:03     Вывод результата работы программы ввиде таблицы #6
А не подскажите где про нее можно почитать что то не на гуглил
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
06.06.2012, 16:05     Вывод результата работы программы ввиде таблицы #7
сходите по ссылке, которую я запостил. она начинается на 33 строке и заканчивается на 84
BF_KARATEL
11 / 11 / 0
Регистрация: 01.06.2012
Сообщений: 114
06.06.2012, 16:19     Вывод результата работы программы ввиде таблицы #8
Блин компилятор ругается библиотек нет(( пытался запустить у себя вашу программу
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2012, 16:24     Вывод результата работы программы ввиде таблицы
Еще ссылки по теме:
C++ Вывести на экран ввиде таблицы значения заданной функции на указанном интервале с заданным шагом
Исправить задачу (Вычислить и вывести на экран ввиде таблицы значения функции F на интервале от Хнач. до Хкон. с шагом dX) C++
C++ Составить программу для вычисления значений функции F(x) на отрезке [A,B] с шагом Н.Результат представить ввиде таблицы, первый столбец которой—з
C++ Убрать вывод фразы "Для продолжения нажмите любую клавишу" по окончании работы программы
Запись в файл результата работы алгоритма lz78 C++

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

Или воспользуйтесь поиском по форуму:
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
06.06.2012, 16:24     Вывод результата работы программы ввиде таблицы #9
хз что у вас за компилятор и какие ошибки. вот ссылка говорит о том, что все корректно:
http://liveworkspace.org/code/e53f12...27a9627817c09d
кстати, попробуйте оттуда код скопировать. возможно он немного отличается от того, что здесь на форуме.
Yandex
Объявления
06.06.2012, 16:24     Вывод результата работы программы ввиде таблицы
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru