Advertisement
Dany1858

debug Esercizio 6.3 lox help

Sep 25th, 2014
650
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.29 KB | None | 0 0
  1. /*Si scriva un programma C che:
  2. a. Acquisisca una stringa di massimo N caratteri (con N valore costante)
  3. b. Ne manipoli il contenuto
  4.    i. Trasformando tutte le lettere minuscole in maiuscole
  5.    ii. Rimpiazzando tutti i caratteri non alfanumerici con il carattere ‘_’
  6.    iii. Sostituendo i caratteri numerici con il carattere ‘*’
  7. c. Scandisca la stringa manipolata per contare quante parole sono
  8. presenti al suo interno, considerando una o più occorrenze del
  9. carattere ‘_’ come separatore tra parole. */
  10.  
  11. #include <stdio.h>
  12. #include <stdlib.h>
  13. #include <ctype.h>
  14.  
  15. #define N 1024
  16.  
  17. int main()
  18. {
  19.   int i, max=0, P, k;
  20.   char risp='s', a;
  21.   char stringa[N+1];
  22.   char pstringa[N+1];
  23.  
  24.                   /*Inizio/reinizio esercizio*/
  25.   while(risp=='s'){
  26.   P=0;
  27.                   /*Carico caratteri*/
  28.   printf("\nInserisci una frase di massimo %d caratteri\n", N);
  29.   for(i=0; (stringa[i]=getchar())!='\n'; i++);
  30.   stringa[i]='\0';
  31.   printf("\nelementi immessi:\n");
  32.   printf("%s", stringa);
  33.  
  34.                   /*trova la lunghezza max della stringa*/
  35.   max=strlen(stringa);
  36.  
  37.                   /*manipolazione contenuto*/
  38.   for(i=0; i<max; i++){
  39.            
  40.                   /*converte minuscole in maiuscole*/
  41.         if(islower(stringa[i])) stringa[i]= toupper (stringa[i]);
  42.                  
  43.                   /*sostituisce caratteri alfanumerici con '_'          */
  44.         else if(!isalnum(stringa[i])) stringa[i]='_';
  45.  
  46.                   /*sostituisce i caratteri numerici con '*'            */
  47.         if(isdigit(stringa[i])) stringa[i]='*';
  48.   }
  49.        
  50.                   /*conta le parole*/
  51.   for(i=0, k=0; i<max; i++, k++){
  52.            
  53.         /*copia carattere per carattere e salta alla fine della parola*/
  54.            while(isalpha(stringa[i])) {pstringa[k]=stringa[i]; i++; k++;}
  55.            P++;
  56.  
  57.                   /*salta alla fine dei caratteri '_'                    */
  58.            while(stringa[i]=='_') i++;
  59.            k++;
  60.            pstringa[k-1]=stringa[i-1];
  61.  
  62.   }
  63.   printf("\nstringa composta da %d parole\n", P);              
  64.   printf("%s", pstringa);
  65.                   /*reiniziare*/
  66.   printf("\nsi desidera reiniziare? (s = SI!)\n");
  67.   scanf("%1s", &risp);
  68.   if(risp=='s') system("cls");
  69.   }
  70.  
  71.   system("PAUSE"); 
  72.   return 0;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement