Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Realizzare un programma che legga da tastiera una sequenza di caratteri
- costituita di sole lettere e spazi, e la compatti sostituendo 2 o più
- occorrenze consecutive di una lettera con il numero di occorrenze seguito
- dalla lettera e sostituendo 2 o più spazi con un solo spazio.
- Esempio:
- La prima riga e' l'input, la seconda e' l'output.
- AADDDDKPP PrRRRR
- 2A4DK2P Pr4R
- wwwwwwwwwwYY SSSSS SSSSGGGGGGGGGGGGGG
- 10wYY 5S 4S14G
- ZZZZZFZZQZZZZZZZZZZZZZ
- 5ZF2ZQ13Z */
- #include <stdio.h>
- #include <stdlib.h>
- #include <ctype.h>
- #define M 1024
- int main()
- {
- int i, k, L, max;
- char stringa[M], pstringa[M];
- char risp='s';
- /*Inizio/reinizio esercizio*/
- while(risp=='s'){
- printf("\nInserisci una frase di massimo %d caratteri\n", M);
- for(i=0; (stringa[i]=getchar())!='\n'; i++);
- stringa[i]='\0';
- printf("\nelementi immessi:\n");
- printf("%s", stringa);
- /*trova la lunghezza max della stringa*/
- max=strlen(stringa);
- for(i=0, k=0; i<max; ){
- L=1;
- if((stringa[i]==stringa[i+1]) && stringa[i+1]!='\0' && stringa[i]!=' '){
- while(stringa[i]==stringa[i+1]) {i++; L++;}
- pstringa[k++]=L;
- pstringa[k++]=stringa[i++];
- }
- else if((stringa[i]==stringa[i+1]) && stringa[i+1]!='\0' && !isalpha(stringa[i])){
- while(stringa[i]==stringa[i+1]) i++;
- pstringa[k++]=' ';
- i++;
- }
- else
- pstringa[k++]=stringa[i++];
- }
- pstringa[k]='\0';
- printf("\n\nstringa compatta\n");
- for(k=0; pstringa[k]!='\0'; k++){
- if(isalpha(pstringa[k]) || pstringa[k]==' ')
- printf("%c", pstringa[k]);
- else
- printf("%d", pstringa[k]);
- }
- /*reiniziare*/
- printf("\nsi desidera reiniziare? (s = SI!)\n");
- scanf("%1s", &risp);
- while(getchar()!='\n');
- if(risp=='s') system("cls");
- }
- printf("Premere un tasto per uscire...");
- getchar();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement