[RISOLTO] programmino in C

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
zanna5
Prode Principiante
Messaggi: 78
Iscrizione: lunedì 23 agosto 2010, 14:15

[RISOLTO] programmino in C

Messaggio da zanna5 »

salve! volevo approfittarne della vostra conoscenza di informatica per chiedervi un aiuto su un programma che devo scrivere in C.
il programma deve solamente prendere in input una stringa (nel mio caso pari) e scambiare l'ordine delle parole:
es  "mare" -> "rema"
io ho scritto qualcosa, ma ho difficoltà nell' ultimo ciclo for, in quanto facendo l'assegnazione, perdo la prima parte della parola;
a me se compilo succede così  "mare" -> "rere"  il  "ma" non riesco a farglielo scrivere. Come cambiare in meglio il programma??
grazie infinite.

void scambia(x)
char x[MAX];
{
  int i,j,m,k;  
  m = strlen(x) % 2;  
  if ( m == 0 )   {
     
     k = strlen(x)/2;
     
     for ( i=0; i<k; i++ )  {
         
         for ( j=k; j<strlen(x); j++ )  {
             
             x[j-k] = x[j];                       /* questa è la parte che non mi funziona */
             x[i+k] = x;
         }
     }
     printf("%s\n", x);
  }
Ultima modifica di zanna5 il venerdì 3 settembre 2010, 12:59, modificato 1 volta in totale.
Avatar utente
Fra-90
Prode Principiante
Messaggi: 211
Iscrizione: venerdì 20 aprile 2007, 18:39

Re: programmino in C

Messaggio da Fra-90 »

se digito "contemporaneamente" quale dovrebbe essere l' output?
Il problema sembra stia nel fatto che non usi una variabile di appoggio per le lettere che vuoi spostare
zanna5
Prode Principiante
Messaggi: 78
Iscrizione: lunedì 23 agosto 2010, 14:15

Re: programmino in C

Messaggio da zanna5 »

Fra-90 ha scritto: se digito "contemporaneamente" quale dovrebbe essere l' output?
Il problema sembra stia nel fatto che non usi una variabile di appoggio per le lettere che vuoi spostare
provando il programma con "contemporaneamente" ottengo -> "aneamenteaneamente"
ma il che è mezzo giusto, perché se il programma dovesse girare correttamente, dovrei ottenere  "aneamentecontempor"
uff.. l'informatica proprio non riesco a mandarla giù..
Avatar utente
Fra-90
Prode Principiante
Messaggi: 211
Iscrizione: venerdì 20 aprile 2007, 18:39

Re: programmino in C

Messaggio da Fra-90 »

prova questo al posto dei due for

Codice: Seleziona tutto

dim=strln(x)
for(i=0;i<dim/2;i++)
{
	x[i]=appoggio;
	x[i]=x[i+(dim/2)];
	x[i+(dim/2)]=appoggio;
}
zanna5
Prode Principiante
Messaggi: 78
Iscrizione: lunedì 23 agosto 2010, 14:15

Re: programmino in C

Messaggio da zanna5 »

ma con appoggio cosa intendi!?! devo dichiarare una nuova variabile?? di che tipo.. scusa le domande ma ho capito cosa vuoi fare in teoria, ma nella pratica non so come attuare il tutto.
Avatar utente
Fra-90
Prode Principiante
Messaggi: 211
Iscrizione: venerdì 20 aprile 2007, 18:39

Re: programmino in C

Messaggio da Fra-90 »

appoggio è un intero o un char, è uguale.

Prova questo:

Codice: Seleziona tutto

void scambia(char x[MAX])
{   
	int appoggio,dim=strln(x);	
	if ((strlen(x) % 2)==0)
		{
			for(i=0;i<dim/2;i++)
				{
					x[i]=appoggio;
					x[i]=x[i+(dim/2)];
					x[i+(dim/2)]=appoggio;
				}
		}
	printf("%s\n", x);
}
Avatar utente
luca1202
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2005
Iscrizione: giovedì 27 novembre 2008, 19:38
Desktop: GNOME Shell
Distribuzione: Ubuntu 19.10
Sesso: Maschile
Località: Ferrara
Contatti:

Re: programmino in C

Messaggio da luca1202 »

e se dividi la stringa in due sottostringhe? in una ci metti la prima metà e nell'altra la seconda e poi ricomponi la stringa finale?
zanna5
Prode Principiante
Messaggi: 78
Iscrizione: lunedì 23 agosto 2010, 14:15

Re: programmino in C

Messaggio da zanna5 »

con la variabile d'appoggio non funziona.. mi viene "mare" -> "re?" con il punto di domanda su sfondo bianco.. provo a spaccare in 2 sotto stringhe, ma dopo come faccio ad unirle? perché devo tener conto se non sbaglio che terminano con '\0' o una roba del genere..
Avatar utente
Fra-90
Prode Principiante
Messaggi: 211
Iscrizione: venerdì 20 aprile 2007, 18:39

Re: programmino in C

Messaggio da Fra-90 »

edit
Ultima modifica di Fra-90 il venerdì 3 settembre 2010, 12:57, modificato 1 volta in totale.
Avatar utente
luca1202
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2005
Iscrizione: giovedì 27 novembre 2008, 19:38
Desktop: GNOME Shell
Distribuzione: Ubuntu 19.10
Sesso: Maschile
Località: Ferrara
Contatti:

Re: programmino in C

Messaggio da luca1202 »

zanna5 ha scritto: con la variabile d'appoggio non funziona.. mi viene "mare" -> "re?" con il punto di domanda su sfondo bianco.. provo a spaccare in 2 sotto stringhe, ma dopo come faccio ad unirle? perché devo tener conto se non sbaglio che terminano con '\0' o una roba del genere..
crei due variabili stringhe temporanee, facendo lo strlen/2 sai esattamente dove termina una e dove inizia l'altra cosi da 0 a (strlen/2)-1 copi nella prima sotto stringa e nella seconda metti da strlen/2 a strlen.
dopo ricopi nella stringa principale, partendo da 0, la seconda e poi la prima.
Avatar utente
Fra-90
Prode Principiante
Messaggi: 211
Iscrizione: venerdì 20 aprile 2007, 18:39

Re: programmino in C

Messaggio da Fra-90 »

Fra-90 ha scritto:
zanna5 ha scritto: con la variabile d'appoggio non funziona.. mi viene "mare" -> "re?" con il punto di domanda su sfondo bianco.. provo a spaccare in 2 sotto stringhe, ma dopo come faccio ad unirle? perché devo tener conto se non sbaglio che terminano con '\0' o una roba del genere..
giusto, piccolo errore:

al posto di x=appoggio inverti le variabili
Ultima modifica di digy79 il venerdì 3 settembre 2010, 13:14, modificato 1 volta in totale.
Bakuriu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1156
Iscrizione: venerdì 23 ottobre 2009, 23:43
Desktop: KDE4
Distribuzione: Kubuntu 12.04 LTS - x86_64

Re: [RISOLTO] programmino in C

Messaggio da Bakuriu »

Esiste una sezione apposita del forum per la programmazione!
zanna5
Prode Principiante
Messaggi: 78
Iscrizione: lunedì 23 agosto 2010, 14:15

Re: [RISOLTO] programmino in C

Messaggio da zanna5 »

ora provo il secondo metodo giusto per esercitarmi, comunque con quello che ha detto Fra-90 è riuscito perfettamente! siete dei geni.. vi stimo e grazie ancora. In caso dovessi avere altri problemi ve li posto qui  ;D
grazie mille ancora!!!
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 5 ospiti