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!!!
