#include #include #include #include struct massiiv{ char tekst; struct massiiv *viit; }; typedef struct massiiv viidatyyp; char TyhikeEemaldajaStringist(char sona[20]){ int n=0; while(sona[n]!=32){ n=n+1; } printf("%d",n); for (n=0;n<10;n++){ sona[n]=sona[n+1]; } sona[10]=0; return sona[20]; }; int main(void){ char sona[10],a,pikkus, sona2[40],sona3[40],pool[10],sona4[10]; int i,j=0,abi=0,m,g=0; viidatyyp *tipp, *sisu, *a1,*a2, *a3; FILE *sonad=fopen("sona2.txt","r"); //vahetame sõnas esimese ja viimase tähe ära printf("sisesta sõna\n"); scanf("%s",sona); printf("%s\n",sona); pikkus=strlen(sona); a=sona[pikkus-1]; sona[pikkus-1]=sona[0]; sona[0]=a; printf("%s\n", sona); //failis on 2 sõna while(!feof(sonad)){ fgets(sona2,39,sonad); } pikkus=strlen(sona2); //kui abi=1, siis kopin teise sõna sona3 alla for(i=0;i<(pikkus);i++){ //sona2=esimene sõna, sõna3=teine sõna if(sona2[i]==32){abi=1;} if(abi==1){sona3[j]=sona2[i];sona2[i]=0;j++;} } TyhikeEemaldajaStringist(sona3); //hakkame vahetama :) //koigepealt pikkusele esimese sona pikkus pikkus=strlen(sona2); //ja nyyd viitade juurde tipp=(massiiv *)malloc(sizeof(massiiv)); tipp=NULL; //esimene sõna pinuks, kuna siis lihtsam yhendada :) for(m=1;m=0;i=i-1){ sisu=(massiiv *)malloc(sizeof(massiiv)); sisu->tekst=sona2[i]; sisu->viit=tipp; tipp=sisu; } for(i=0;iviit; a1=sisu; //a1, teise poole algus } for(i=m;iviit; a3=sisu; //a3, liigun esialgse sõna lõppu, et sinna esialgse sona algus omistada } a2->viit=NULL; //esimese poole lõppu omistan 0-i printf("\n"); a3->viit=tipp; //siin omistan siis esialgsesse lõppu esialgse alguse sisu=a1; //liigun uute algusesse while(sisu!=NULL){ //trykin välja uue sona printf("%c",sisu->tekst); sona4[g]=sisu->tekst; //sona4 uus kombineeritud sona stringina sisu=sisu->viit; g++; } printf(" %s %s %d %d\n",sona4,sona3,strlen(sona4),strlen(sona3)); g=0; if((strcmp(sona3,sona4))==0){printf(" success!!");} } printf("\n%s %d %s\n",sona2,pikkus, sona3); fclose(sonad); printf("%s",sona3); getch(); return 1; }