• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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
 
E

European

Во первых, есть тэги кода и форматирование, помогающие читать ваш код. Во-вторых, выделите в коде переменные, одновременно не используемые в программе и объявите их объединении (Union)
 
D

dime

спасибо за ответ, но можно ли по подробней про union. Как будет все это выглядить или пример какой. Просто я еще только начинаю осваивать с.
 
E

European

<!--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]
Возьми книжку Страуструпа и посмотри, там достаточно наглядный пример
 
D

dime

ссылку можешь кинуть на книгу? Еслиб источник был, яб тут не сидел(
 
E

European

<!--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]
Если бы об этом узнали Гугл с Яндексом, они бы долго рыдали
 
D

dime

ну знаешь? очень помог. Спасибо. Тогда вопрос. Заче форум вобще нужен? Чтоб такие советы давать?
 

Kmet

Well-known member
25.05.2006
904
8
BIT
0
уж точно не для того что бы делать за студентов лабы
 
E

European

Для: dime
Можешь сказать свою цену и тогда я сделаю эту прогу за тебя - и я заработаю, и тебя из универа не выгонят
 
E

European

Для: dime Можешь посмотреть
 
D

dime

Для: Kmet
А кто просил писать за меня? Я просил пример показать как делать с обьединеньем.

Для: European

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

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