Funzione per capovolgere una stringa

di il
30 risposte

30 Risposte - Pagina 2

  • Re: Funzione per capovolgere una stringa

    Così?:
    
    int i, n;
    	printf("Numero di caratteri: ")
    	scanf("%d", &n);
    	char v[n];
    	for (i = 0; i < n; i++) 
    		v[i] = getchar();
    
  • Re: Funzione per capovolgere una stringa

    Ma no ... ragiona un po'. Se inserisco una frase o una parola la termino con il return (carattere '\n').

    Quindi devi fare un po' come con la getline ma terminando l'input se hai raggiunto la fine dell'array o hai premuto il return.
    Ovviamente il carattere '\n' non dovrà far parte della stringa che andrà chiusa con un carattere '\0'.

    Alla fine passerai il vettore con la stringa alla reverse che si aspetta un vettore di char e non un singolo char e che dovrà operare sul vettore, non stampare il suo contenuto.
  • Re: Funzione per capovolgere una stringa

    Non funziona ma sono un po' più vicino alla soluzione?
    
    #include <stdio.h>
    #include <string.h>
    //passa un vettore con una stringa a reverse
    void reverse(char s[]);
    
    void main()
    {
    
    	int i;
    	char v[10];
    	for (i = 0; i < 10; i++) 
    		v[i] = getchar();
    	v[i] = '\0';
    	reverse(v);
    	printf("%s", v);
    }
    
    void reverse(char s[])
    {
    	int i, j;
    	char temp;
    	for (i = strlen(s) - 1, j = 0; i >= 0; --i, ++j)
    	{
    		temp = s[j];
    		s[j] = s[i];
    		s[i] = temp;
    	}
    	
    }
    [code]
  • Re: Funzione per capovolgere una stringa

    Ma ti avevi detto che il for non va bene o non mi capisci?
  • Re: Funzione per capovolgere una stringa

    Aspetta lo stavo correggendo ma ho mandato la versione sbagliata
  • Re: Funzione per capovolgere una stringa

    
    #include <stdio.h>
    #include <string.h>
    //passa un vettore con una stringa a reverse
    void reverse(char s[]);
    
    void main()
    {
    
    	int i;
    	char v[10];
    	i = 0;
    	while (i < 10) {
    		++i;
    		v[i] = getchar();
    	}
    	v[i] = '\0';
    	reverse(v);
    	printf("%s", v);
    }
    
    void reverse(char s[])
    {
    	int i, j;
    	char temp;
    	for (i = strlen(s) - 1, j = 0; i >= 0; --i, ++j)
    	{
    		temp = s[j];
    		s[j] = s[i];
    		s[i] = temp;
    	}
    	
    }
    
  • Re: Funzione per capovolgere una stringa

    SuperManPC ha scritto:


    
    	i = 0;
    	while (i < 10) {
    		++i;
    		v[i] = getchar();
    	}
    
    Perché non fare un for a questo punto?
    Comunque vai a scrivere in v[10] che è fuori dall'array.

    Ti conviene ricominciare dall'inizio il libro
  • Re: Funzione per capovolgere una stringa

    Weierstrass ha scritto:


    Ti conviene ricominciare dall'inizio il libro
    Concordo ... non hai chiaro quando usare un ciclo for e quando un while e soprattutto come usarli.

    Ma se voglio inserire

    ciao

    e terminare la parola con return, come fa il tuo codice??
  • Re: Funzione per capovolgere una stringa

    Weierstrass ha scritto:


    SuperManPC ha scritto:


    
    	i = 0;
    	while (i < 10) {
    		++i;
    		v[i] = getchar();
    	}
    
    Perché non fare un for a questo punto?
    Comunque vai a scrivere in v[10] che è fuori dall'array.

    Ti conviene ricominciare dall'inizio il libro
    No non mi conviene l' ho già fatto. Ho un libro avanzato non è sulle basi
  • Re: Funzione per capovolgere una stringa

    Allora cambia libro e usa uno che parli delle basi. A livello didattico va bene il Deitel&Deitel
  • Re: Funzione per capovolgere una stringa

    Comunque si può imparare anche se uno ti da la soluzione. Dalla soluzione potrei ricavare la teoria e non è impossibile.
  • Re: Funzione per capovolgere una stringa

    Non so come usare for e while ? Cosa vuol dire? Uno fa uno sbaglio e gli viene detto che non sa usare i cicli ?!
  • Re: Funzione per capovolgere una stringa

    Weierstrass ha scritto:


    SuperManPC ha scritto:


    
    	i = 0;
    	while (i < 10) {
    		++i;
    		v[i] = getchar();
    	}
    
    Perché non fare un for a questo punto?
    Comunque vai a scrivere in v[10] che è fuori dall'array.

    Ti conviene ricominciare dall'inizio il libro
    Bho qualcuno qua mi ha detto che il for è assolutamente vietato da usare.
  • Re: Funzione per capovolgere una stringa

    Intendeva dire che la while che hai scritto era uguale alla for di prima quindi era inutile scriverla in quel modo ... era una battuta!

    Ti ho detto che il ciclo ai deve interrompere come nella getline...
  • Re: Funzione per capovolgere una stringa

    Quindi metto return; e basta?
Devi accedere o registrarti per scrivere nel forum
30 risposte