Advertisement
Guest User

Untitled

a guest
Dec 9th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.75 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. /* Si scriva una funzione ricorsiva in C che prende in ingresso una stringa e restituisce la medesima invertita. Ad
  6. esempio, Cremona diventerebbe anomerC. La funzione deve poter gestire stringhe di dimensioni qualsiasi
  7. (si consiglia di avere la dimensione come parametro della funzione).
  8. Per semplificare la scrittura del codice, si ricorda che string.h mette a disposizione diverse funzioni per la
  9. gestione delle stringhe. Ad esempio:
  10. • size t strlen(const char *s), per calcolare la lunghezza effettiva di una stringa;
  11. • char *strcat(char *restrict s1, const char *restrict s2), per il concatenamento di due stringhe;
  12. • char *strncpy(char *restrict s1, const char *restrict s2, size t n), per la copia di n caratteri di una stringa in un’altra.*/
  13. //char* inversioneRic (char str[]);
  14. #define ARRLENGHT 8
  15.  
  16. typedef enum { false,true} bool;
  17.  
  18. bool InvertiStringa(char*pc,char*uc);
  19.  
  20. int main() {
  21. char myarr [ARRLENGHT] = {'b','e','l','l','a','l','i','a'};
  22. int i;
  23. bool ok = InvertiStringa(&myarr[0],&myarr[ARRLENGHT-1]); // passo alla funzione InverstiStringa l'indirizzo del 1° e ultimo carattere
  24. printf("la stringa inversa è: ");
  25.  
  26. for(i = 0; i<ARRLENGHT; i++)
  27. printf("%c",myarr[i]);
  28. return 0;
  29. }
  30.  
  31. bool InvertiStringa(char*pc,char*uc){
  32. char tempo;
  33. if(pc>=uc) // se l'indirizzo del primo car è maggiore o = dell'ultimo carattere ho finito
  34. return 1;
  35.  
  36. tempo = *pc; // nella mia variabile tempo metto il valore del primo carattere, per non perderlo
  37. *pc = *uc; // nella prima variabile scrivo il valore dell'ultimo carattere
  38. *uc= tempo; // nell'ultimo carattere inserisco il valore di tempo
  39.  
  40. return InvertiStringa(pc+1,uc-1); // Tolgo il primo e l'ultimo carattere
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement