• Бесплатный ВЕБИНАР по OSINT с Екатериной Тьюринг: ➡️9 февраля в 19:00 (мск) пройдет урок

    Как безопасно искать информацию в открытых источниках

    🔥 Записаться 🔥

Unioin - как с ним будет выглядить?

  • Автор темы Автор темы dime
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
D

dime

Суть задачи. Дана программа рабочая на забивание массива и на вывод инфы из него. А теперь программу надо переписать через Union. Подскажите как будет все выглядить?

Вот код:

Код:
#include "stdafx.h"
#include <conio.h>
char str[100];
char*** glava[100];
char** stroka[100];
int num, gln, stn, sln;
char* slovo[100];
void vivodd(void*** par, int rec){
void** st;
void** ed;
char* tmpp;
st=*par;
ed=*(par+1);
switch (rec){
case 5: {printf("\nGLAVA"); break;}
case 4:	{printf("\n"); break;}
case 3: {printf(" "); break;}}
while(st<ed){
if (rec==3){
tmpp=(char*)st;
printf("%c", *tmpp);
tmpp++;
st=(void**)tmpp;
}
else
{
vivodd((void***)st, rec-1 );
st++;
}
}
}
void zagruzka(){
FILE* in=fopen("kniga.txt","r");
int i, t;
fscanf(in, "%d", &num);
fscanf(in, "%s", str);
fscanf(in, "%d", &sln);
for (i=0; i<=sln; i++){
fscanf(in, "%d", &t);
slovo[i]=str+t;
}
fscanf(in, "%d", &stn);
for (i=0; i<=stn; i++){
fscanf(in, "%d", &t);
stroka[i]=slovo+t;
}
fscanf(in, "%d", &gln);
for (i=0; i<=gln; i++){
fscanf(in, "%d", &t);
glava[i]=stroka+t;
}
glava[gln+1]=stroka+stn+1;
stroka[stn+1]=slovo+sln+1;
slovo[sln+1]=str+num+1;
fclose(in);
}
int input(){
int met;
printf("Vvedi chto vivesti:1)kniga\n");
printf("				  2)glava\n");
printf("				  3)stroka\n");
printf("				  4)slovo\n");
scanf("%d", &met);
return met;
}
void vivod(int n){
int a, b, c, i;
switch(n){
case 1:{ for (i=0; i<=gln; i++)
vivodd((void***)(glava+i), 5);
break;}
case 2:{
printf("Vvedite nomer glavi:");
scanf("%d", &a);
vivodd((void***)(glava+a), 5);
break;
}
case 3:{
printf("Vvedite nomer glavi i stroki:");
scanf("%d%d", &a, &b);
vivodd((void***)(glava[a]+b ), 4);
break;}
case 4:{
printf("Vvedite nomer glavi, stroki i slova");
scanf("%d%d%d", &a, &b, &c);
vivodd((void***)(glava[a][b]+c), 3);
break;}
}
}
int _tmain(int argc, _TCHAR* argv[])
{  
int met;
printf("Hello. Press any key to continue. Press esc to quit \n");
zagruzka();
while(getch()!=27){ 
met=input();
vivod(met);
}
return 0;
}


########################################################

Также вот содержимое файла kniga.txt

77
iamdimoniamfromrussiaendyouarenotdimonyouarenotrussianwearerussiansbutiamdimon
23
0
1
3
8
9
11
15
21
24
27
30
33
38
41
44
47
54
56
59
67
70
71
73
78
7
0
3
7
8
12
16
19
23
2
0
3
5
 
Во первых, есть тэги кода и форматирование, помогающие читать ваш код. Во-вторых, выделите в коде переменные, одновременно не используемые в программе и объявите их объединении (Union)
 
спасибо за ответ, но можно ли по подробней про union. Как будет все это выглядить или пример какой. Просто я еще только начинаю осваивать с.
 
<!--QuoteBegin-dime+4:12:2006, 19:44 -->
<span class="vbquote">(dime @ 4:12:2006, 19:44 )</span><!--QuoteEBegin-->Как будет все это выглядить или пример какой.
[snapback]49791" rel="nofollow" target="_blank[/snapback]​
[/quote]
Возьми книжку Страуструпа и посмотри, там достаточно наглядный пример
 
ссылку можешь кинуть на книгу? Еслиб источник был, яб тут не сидел(
 
<!--QuoteBegin-dime+5:12:2006, 23:55 -->
<span class="vbquote">(dime @ 5:12:2006, 23:55 )</span><!--QuoteEBegin-->ссылку можешь кинуть на книгу? Еслиб источник был, яб тут не сидел(
[snapback]49960" rel="nofollow" target="_blank[/snapback]​
[/quote]
Если бы об этом узнали Гугл с Яндексом, они бы долго рыдали
 
ну знаешь? очень помог. Спасибо. Тогда вопрос. Заче форум вобще нужен? Чтоб такие советы давать?
 
уж точно не для того что бы делать за студентов лабы
 
Для: dime
Можешь сказать свою цену и тогда я сделаю эту прогу за тебя - и я заработаю, и тебя из универа не выгонят
 
Для: dime Можешь посмотреть
 
Для: Kmet
А кто просил писать за меня? Я просил пример показать как делать с обьединеньем.

Для: European

За деньги я и сам напишу прогу. А за ссылку спасибо.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!