Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

last_wish

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору


Код:
 
#include <stdio.h>
#include <stdlib.h> // для malloc()
 
struct Item{
       char c;
       Item *next;
} *it1,*it2,*it1start,*it2start,*it2end;
 
void makestruct(char *str)
{
     int i=0;
     it1start=it1=(Item *)malloc(sizeof(Item));
     while(str[i]!='\0')
     {                        
                          it1->c=str[i];
                          it1->next=(Item *)malloc(sizeof(Item));
                          it1=it1->next;
                          i++;
     };
     it1->c=' ';
     it1->next=NULL;
}
 
void obrabotka()
{
  int numb=0; // schetchik bukv v slovax
  Item *promeg=it1start; // promeg - tekushii ukazatel (na nachalo slova)
  it1=it1start; // nachnem s nachala spiska
  it2start=it2=(Item *)malloc(sizeof(Item));
  while (it1!=NULL)
  {      
        if((it1->c != 0x09) && (it1->c != ' '))
        {
                        numb++;
        }
        else
        {
            numb=0;
            promeg=it1=it1->next;
            continue;
        };
         
        if (numb==3)
        {
                   if((it1->next->c==' ') || (it1->next->c==0x09))
                   {
                                         // 3 bukvi - peremeshaem v it2
                                         if(it2!=it2start)
                                         {
                                             it2->c=' ';
                                             it2->next=(Item *)malloc(sizeof(Item));
                                             it2=it2->next;
                                         };
                                         it2->c=promeg->c;
                                         it2->next=(Item *)malloc(sizeof(Item));
                                         it2=it2->next;
                                         it2->c=promeg->next->c;
                                         it2->next=(Item *)malloc(sizeof(Item));
                                         it2=it2->next;
                                         it2->c=it1->c;
                                         it2end=it2; //chtobi ubrat' konecnii lishii symbol(probel) ispolzuu it2end;
                                         it2->next=(Item *)malloc(sizeof(Item));
                                         it2=it2->next;
                                         // obnulim schetchik
                                         numb=0;
                                         promeg=it1=it1->next->next;
                                         continue;
                   };
        }
         
        it1=it1->next;
  }
  it2->next=NULL;
  it2end=it2;
}
 
void vivod()
{
     it2=it2start;
     while(it2!=it2end)
     {
                    printf("%c",it2->c);
                    it2=it2->next;                    
     }
     printf("\n");
 
}
 
void memfree()
{
    Item *temp;
    it1=it1start;
    while (it1!=NULL)
    {
        temp=it1->next;
        free(it1);
        it1=temp;
    };
    it2=it2start;
    while (it2!=NULL)
    {
        temp=it2->next;
        free(it2);
        it2=temp;
    };
}
 
int main()
{
    printf("Vvedite stroki, nagmite <Enter>. Dvagdi <Enter> dlya konca:\n");
    char str[256];
    while (gets(str) != NULL)
    {
        if(str[0]=='\0') break;
        makestruct(str);
        obrabotka();
        vivod();
        memfree();
    };
    return 0;
}
 


Всего записей: 109 | Зарегистр. 26-10-2006 | Отправлено: 13:20 25-01-2007 | Исправлено: last_wish, 13:44 25-01-2007
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru