Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- /* Si scriva una funzione ricorsiva in C che prende in ingresso una stringa e restituisce la medesima invertita. Ad
- esempio, Cremona diventerebbe anomerC. La funzione deve poter gestire stringhe di dimensioni qualsiasi
- (si consiglia di avere la dimensione come parametro della funzione).
- Per semplificare la scrittura del codice, si ricorda che string.h mette a disposizione diverse funzioni per la
- gestione delle stringhe. Ad esempio:
- • size t strlen(const char *s), per calcolare la lunghezza effettiva di una stringa;
- • char *strcat(char *restrict s1, const char *restrict s2), per il concatenamento di due stringhe;
- • char *strncpy(char *restrict s1, const char *restrict s2, size t n), per la copia di n caratteri di una stringa in un’altra.*/
- //char* inversioneRic (char str[]);
- #define ARRLENGHT 8
- typedef enum { false,true} bool;
- bool InvertiStringa(char*pc,char*uc);
- int main() {
- char myarr [ARRLENGHT] = {'b','e','l','l','a','l','i','a'};
- int i;
- bool ok = InvertiStringa(&myarr[0],&myarr[ARRLENGHT-1]); // passo alla funzione InverstiStringa l'indirizzo del 1° e ultimo carattere
- printf("la stringa inversa è: ");
- for(i = 0; i<ARRLENGHT; i++)
- printf("%c",myarr[i]);
- return 0;
- }
- bool InvertiStringa(char*pc,char*uc){
- char tempo;
- if(pc>=uc) // se l'indirizzo del primo car è maggiore o = dell'ultimo carattere ho finito
- return 1;
- tempo = *pc; // nella mia variabile tempo metto il valore del primo carattere, per non perderlo
- *pc = *uc; // nella prima variabile scrivo il valore dell'ultimo carattere
- *uc= tempo; // nell'ultimo carattere inserisco il valore di tempo
- return InvertiStringa(pc+1,uc-1); // Tolgo il primo e l'ultimo carattere
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement