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

Тема в разделе "Общие вопросы по С и С++", создана пользователем dime, 3 дек 2006.

Статус темы:
Закрыта.
  1. dime

    dime Гость

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

    Вот код:

    Код (Text):
    #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
     
  2. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Во первых, есть тэги кода и форматирование, помогающие читать ваш код. Во-вторых, выделите в коде переменные, одновременно не используемые в программе и объявите их объединении (Union)
     
  3. dime

    dime Гость

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

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    <!--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]
    Возьми книжку Страуструпа и посмотри, там достаточно наглядный пример
     
  5. dime

    dime Гость

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

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    <!--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]
    Если бы об этом узнали Гугл с Яндексом, они бы долго рыдали
     
  7. dime

    dime Гость

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

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    уж точно не для того что бы делать за студентов лабы
     
  9. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Для: dime
    Можешь сказать свою цену и тогда я сделаю эту прогу за тебя - и я заработаю, и тебя из универа не выгонят
     
  10. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
  11. dime

    dime Гость

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

    Для: European

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

Поделиться этой страницей