Funzione per capovolgere una stringa

di Anonimizzato28411 il
30 risposte

30 Risposte - Pagina 2

  • Così?:
    
    int i, n;
    	printf("Numero di caratteri: ")
    	scanf("%d", &n);
    	char v[n];
    	for (i = 0; i < n; i++) 
    		v[i] = getchar();
    
  • 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.
  • 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]
  • Ma ti avevi detto che il for non va bene o non mi capisci?
  • Aspetta lo stavo correggendo ma ho mandato la versione sbagliata
  • 
    #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;
    	}
    	
    }
    
  • 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
  • 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??
  • 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
  • Allora cambia libro e usa uno che parli delle basi. A livello didattico va bene il Deitel&Deitel
  • Comunque si può imparare anche se uno ti da la soluzione. Dalla soluzione potrei ricavare la teoria e non è impossibile.
  • Non so come usare for e while ? Cosa vuol dire? Uno fa uno sbaglio e gli viene detto che non sa usare i cicli ?!
  • 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.
  • 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...
  • Quindi metto return; e basta?
Devi accedere o registrarti per scrivere nel forum
30 risposte