File sequenziale.... boh..
ora mi sono imbattuto in un file sequenziale......
"Si scriva un programma modulare in che legga dal file input.dat una sequenza di parole e le trascrive sul file output.dat dopo aver fatto scorrere di k posizioni ciascuna parola verso destra (k intero e specificato dall'utente)."
mi sono perso sul fatto di leggere da un file e scrivere in un altro...... questo è quello che ho scritto io... ho scelto le dimensioni delle parole (cioè dei vettori) a caso...
#include
main ()
{
char parola_1[20];
char parola_1[10];
char parola_1[30];
FILE *finput;
int k;
printf("Leggo le parole dal file, le faccio scorrere verso destra e le copio");
if ((finput = fopen("input.dat","r"))==NULL) /* apro finput in lettura */
printf("Il file non può essere aperto");
else
{
printf("Inserire il valore di k:\n");
scanf ("%d", &k);
/* e da qui ...... l'oblio */
"Si scriva un programma modulare in che legga dal file input.dat una sequenza di parole e le trascrive sul file output.dat dopo aver fatto scorrere di k posizioni ciascuna parola verso destra (k intero e specificato dall'utente)."
mi sono perso sul fatto di leggere da un file e scrivere in un altro...... questo è quello che ho scritto io... ho scelto le dimensioni delle parole (cioè dei vettori) a caso...
#include
main ()
{
char parola_1[20];
char parola_1[10];
char parola_1[30];
FILE *finput;
int k;
printf("Leggo le parole dal file, le faccio scorrere verso destra e le copio");
if ((finput = fopen("input.dat","r"))==NULL) /* apro finput in lettura */
printf("Il file non può essere aperto");
else
{
printf("Inserire il valore di k:\n");
scanf ("%d", &k);
/* e da qui ...... l'oblio */
Risposte
char parola_1[20];
char parola_1[10];
char parola_1[30];
Questa dichiarazione non va bene perchè ci sono tre variabili con nome uguale. Poi per scorrere verso destra cosa intendi.
Questo: parola -> ____parola (_ indico lo spazio) di 4 posizioni?
char parola_1[10];
char parola_1[30];
Questa dichiarazione non va bene perchè ci sono tre variabili con nome uguale. Poi per scorrere verso destra cosa intendi.
Questo: parola -> ____parola (_ indico lo spazio) di 4 posizioni?
grazie per la risposta veloce... allora... riparo agli effetti del sonno....
1) char parola_1[20];
char parola_2[10];
char parola_3[30];
i valori dentro le parentesi li ho messi a caso visto che le parole sono già dentro input.dat
2) credo sia così : parola___parola___parola___ gli spazi sono dati dai k.. il prof non è stato chiaro....
1) char parola_1[20];
char parola_2[10];
char parola_3[30];
i valori dentro le parentesi li ho messi a caso visto che le parole sono già dentro input.dat
2) credo sia così : parola___parola___parola___ gli spazi sono dati dai k.. il prof non è stato chiaro....
Si infatti nn è proprio chiarissima la storia del far scorrere le parole. All'inizio pensavo una cosa cosi:
dato "ciao" falla scorrere di 2 diventa "ci"
I prof si sprecano sempre poco nel chiarire le cose :\
dato "ciao" falla scorrere di 2 diventa "ci"
I prof si sprecano sempre poco nel chiarire le cose :\
intanto..... il far scorrere le parole c'entra qualcosa con il bitwise???? (operatore >>) io credo di no , ma un mio amico dice di si..... a chi devo credere??? a me stesso e al mitico forum o a quel salame??
>dopo aver fatto scorrere di k posizioni ciascuna parola verso destra
Generalmente il far scorrere fa venire in mente la manipolazione a livello di bit (e quindi l'uso di >>)
ma qui lui parla di posizioni... per questo ti chiedevo se si riferisse alle lettere
Io pensavo ad uno scorrimento a livello di caratteri piu che di bit... dovresti informarti su cosa è veramente da fare
Generalmente il far scorrere fa venire in mente la manipolazione a livello di bit (e quindi l'uso di >>)
ma qui lui parla di posizioni... per questo ti chiedevo se si riferisse alle lettere
Io pensavo ad uno scorrimento a livello di caratteri piu che di bit... dovresti informarti su cosa è veramente da fare
Il problema pare chiaro: trattandosi di parole, bisogna far scorrerne le lettere a destra; ha poco senso shiftare i bit delle singole lettere. Posto un programma C che effettua lo scorrimento a destra con recupero a sinistra (non inteso in ambito politico!
).
E' facilmente modificabile se non si vuole lo scorrimento "rotatorio" con recupero a sinistra.
/* "Si scriva un programma modulare in C che legga dal file input.dat una
sequenza di parole e le trascrive sul file output.dat dopo aver fatto
scorrere di k posizioni ciascuna parola verso destra
(k intero e specificato dall'utente)."
*/
#include <stdio.h>
#define dim 20
char par[dim];
char c;
FILE* fp1;
FILE* fp2;
void scorri(int n)
{
char x;
char par2[dim];
int i,j;
int l;
l=strlen(par);
for (i=0;i<=l;i++) par2[i]=par[i];
for (i=1;i<=n;i++) {
x=par[l-1];
for (j=l-1;j>=0;j--) {
par[j]=par[j-1];
}
par[0]=x;
}
printf("input : %s", par2);
printf(" | output: %s\n", par);
c=getchar();
return;
}
void main()
{
int k;
fp1 = fopen("input.dat", "r");
fp2 = fopen("output.dat", "w");
if (fp1 == NULL || fp2 == NULL) {
printf("Errore nell'apertura dei file!");
c=getchar();
return 0;
}
printf("k? ");
scanf("%u",&k);
while (!feof(fp1)) {
fscanf(fp1,"%s\n",par);
scorri(k);
fprintf(fp2,"%s\n", par);
}
fclose(fp1);
fclose(fp2);
return 0;
}E' facilmente modificabile se non si vuole lo scorrimento "rotatorio" con recupero a sinistra.
che devo dirti lorven..... grazie!!!
Come sempre il nostro caro lorven ci dimostra grande cultura informatica!!!