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 |
|