Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    10

    Funzione inversione stringa

    codice:
    //Definizione della funzione che genera il vettore in ordine opposto;  void inverti_vet(char vet[],int dim){        
    int k;            
    for(k=0;vet[k]!='\0';k++){                         
                                       vet[k] = vet[dim-1-k];                         } 
    }
    Ho un problema con questa funzione che ho scritto....inserisco una stringa di 4 char ad esempio
    "abcd" e dopo la chiamata a funzione in main quando stampo la stringa invertita mi da "dccd" e non capisco il motivo!!!

    Grazie mille

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2009
    residenza
    Roma
    Messaggi
    371
    mi sembra logico, se questa è la stringa
    abcd
    esegue questi passi:
    abcd
    dbcd
    dccd

    dopodiché quando effettua gli ultimi 2 passaggi la stringa è già modificata...

    per far funzionare correttamente il tutto dovresti usare una stringa d'appoggio

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466

    Re: Funzione inversione stringa

    Originariamente inviato da carota89
    non capisco il motivo!!!
    Come mai non capisci il motivo?

    L'hai scritto tu la funzione?

    Se l'hai scritto tu, secondo quale criterio l'hai scritto ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    Prova qui o qui
    Per gli Spartani e Sparta usa spartan Il mio github

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    10
    potresti farmi un esempio per favore con una stringa di appoggio modificando la mia funzione perchè non ho capito bene come fare?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Con questa riga

    vet[k] = vet[dim-1-k];

    vuoi scambiare i due elementi, ma il primo te lo perdi ...

    Devi usare una variabile temporanea ...

    char temp;

    temp=vet[k];
    vet[k] = vet[dim-1-k];
    vet[dim-1-k] = temp;
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    10
    Mi scuso ma non ho capito e non funziona lo stesso!Sono alle prime armi se c'è qualcuno di buona volontà lo ringrazierei di cuore!

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Sì, però impegnati un po' ...

    Dai un'occhiata a questo

    codice:
    	int k;
            int x=strlen(vet);            
    
    	for(k=0; k<x/2; k++)
    	{
    		char t=vet[k];
    		vet[k] = vet[x-1-k];
    		vet[x-1-k]=t;
    	}
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    10
    Ti ringrazio tanto per la tua pazienza....ho studiato il codice da te proposto ed ora l'ho capito.
    L'unica cosa che non mi torna e che non mi faceva tornare l'esercizio è che io mettevo la condizione del for per invertire la stringa come for(k=0;k<vet[k]!='\0' ;k++) ma non funziona...per quale ragione?
    Grazie ancora.

    EDIT:Giacchè ci sono ho un altro piccolo prblema con un altro esercizio che dice cosi:
    Scrivere un programma che legge da tastiera 2 caratteri.Il programma deve stampare
    un messaggio che indica se i 2 caratteri sono stati inseriti in ordine alfabetico.

    Il mio probleama riguarda il caso in cui inserisco un carattere maiuscolo ed uno minuscolo,ecco il codice che ho scritto:
    codice:
    if(((ch1>='A' && ch1<='Z') || (ch1>='a' && ch1<='z')) && ((ch2>='A' && ch2<='Z') || (ch2>='a' && ch2<='z'))){                   
    if((ch1>='A' && ch2<='Z') || (ch1>='a' && ch2<='z')) //mancano le condizioni per ch1 maiuscolo e ch2 minuscolo e viceversa.                                          
    printf("I caratteri inseriti sono in ordine alfabetico\n");
    else                        
    printf("I caratteri inseriti NON sono in ordine alfabetico\n");                                                  
     }  
    else 
    printf("ERRORE!!!!!!!:I caratteri inseriti NON sono alfabetici\n");

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da carota89
    L'unica cosa ...
    Non era solo quella for ... il problema più grave erano tre righe all'interno del for (lo scambio) che non avevi scritto ...

    Con quelle tre righe, la tua for avrebbe scambiato 2 volte la stringa ... a te capire perché.

    EDIT:Giacchè ci sono ho un altro piccolo prblema con un altro esercizio che dice cosi:
    Altro problema, altro thread ...

    Leggi il regolamento ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.