[RISOLTO] programmino in C
[RISOLTO] programmino in C
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);
}
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.
Re: programmino in C
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
Il problema sembra stia nel fatto che non usi una variabile di appoggio per le lettere che vuoi spostare
Re: programmino in C
provando il programma con "contemporaneamente" ottengo -> "aneamenteaneamente"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
ma il che è mezzo giusto, perché se il programma dovesse girare correttamente, dovrei ottenere "aneamentecontempor"
uff.. l'informatica proprio non riesco a mandarla giù..
Re: programmino in C
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;
}Re: programmino in C
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.
Re: programmino in C
appoggio è un intero o un char, è uguale.
Prova questo:
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);
}
- luca1202
- 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
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?
Re: programmino in C
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..
Re: programmino in C
edit
Ultima modifica di Fra-90 il venerdì 3 settembre 2010, 12:57, modificato 1 volta in totale.
- luca1202
- 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
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.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..
dopo ricopi nella stringa principale, partendo da 0, la seconda e poi la prima.
Re: programmino in C
giusto, piccolo errore: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..
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

- Messaggi: 1156
- Iscrizione: venerdì 23 ottobre 2009, 23:43
- Desktop: KDE4
- Distribuzione: Kubuntu 12.04 LTS - x86_64
Re: [RISOLTO] programmino in C
Esiste una sezione apposita del forum per la programmazione!
Re: [RISOLTO] programmino in C
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!!!
grazie mille ancora!!!
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 5 ospiti