Advertisement
Dany1858

debug Esercizio 6.5

Sep 28th, 2014
524
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.09 KB | None | 0 0
  1. /*Realizzare un programma che legga da tastiera una sequenza di caratteri
  2. costituita di sole lettere e spazi, e la compatti sostituendo 2 o più
  3. occorrenze consecutive di una lettera con il numero di occorrenze seguito
  4. dalla lettera e sostituendo 2 o più spazi con un solo spazio.
  5. Esempio:
  6. La prima riga e' l'input, la seconda e' l'output.
  7.  
  8. AADDDDKPP PrRRRR
  9. 2A4DK2P Pr4R
  10.  
  11. wwwwwwwwwwYY SSSSS SSSSGGGGGGGGGGGGGG
  12. 10wYY 5S 4S14G
  13.  
  14. ZZZZZFZZQZZZZZZZZZZZZZ
  15. 5ZF2ZQ13Z                                                                */
  16.  
  17. #include <stdio.h>
  18. #include <stdlib.h>
  19. #include <ctype.h>
  20.  
  21. #define M 1024
  22.  
  23. int main()
  24. {
  25.   int i, k, L, max;
  26.   char stringa[M], pstringa[M];
  27.   char risp='s';
  28.  
  29.                   /*Inizio/reinizio esercizio*/
  30.   while(risp=='s'){
  31.  
  32.   printf("\nInserisci una frase di massimo %d caratteri\n", M);
  33.   for(i=0; (stringa[i]=getchar())!='\n'; i++);
  34.   stringa[i]='\0';
  35.   printf("\nelementi immessi:\n");
  36.   printf("%s", stringa);
  37.  
  38.                   /*trova la lunghezza max della stringa*/
  39.   max=strlen(stringa);
  40.  
  41.   for(i=0, k=0; i<max; ){      
  42.        L=1;
  43.            
  44.        if((stringa[i]==stringa[i+1]) && stringa[i+1]!='\0' && stringa[i]!=' '){
  45.             while(stringa[i]==stringa[i+1]) {i++; L++;}
  46.             pstringa[k++]=L;
  47.             pstringa[k++]=stringa[i++];
  48.        }
  49.        else if((stringa[i]==stringa[i+1]) && stringa[i+1]!='\0' && !isalpha(stringa[i])){
  50.                  while(stringa[i]==stringa[i+1]) i++;
  51.                  pstringa[k++]=' ';
  52.                  i++;
  53.             }
  54.             else
  55.                  pstringa[k++]=stringa[i++];
  56.   }
  57.   pstringa[k]='\0';
  58.   printf("\n\nstringa compatta\n");
  59.   for(k=0; pstringa[k]!='\0'; k++){
  60.         if(isalpha(pstringa[k]) || pstringa[k]==' ')
  61.         printf("%c", pstringa[k]);
  62.         else
  63.         printf("%d", pstringa[k]);
  64.   }
  65.                   /*reiniziare*/
  66.   printf("\nsi desidera reiniziare? (s = SI!)\n");
  67.   scanf("%1s", &risp);
  68.   while(getchar()!='\n');
  69.   if(risp=='s') system("cls");
  70.   }  
  71.  
  72.   printf("Premere un tasto per uscire...");
  73.   getchar();   
  74.   return 0;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement