Qualcuno può aiutarmi a farlo? non come si deve fare

di il
2 risposte

Qualcuno può aiutarmi a farlo? non come si deve fare

Il seguente codice crea un file binario ("archivio") costituito da una sequenza di strutture.
Ciascuna struttura ha un campo "numeri" (array di ARRLEN interi), un campo "nome"
(stringa di STRINGALEN caratteri piu' il carattere '\0').
Si richiede la generazione di un nuovo file binario ("finale") in cui le strutture abbiano
i seguenti campi:

int numeriordinati[ARRLEN];
char vocali[STRINGALEN+1];
char consonanti[STRINGALEN+1];
char cifre[STRINGALEN+1];
char altro[STRINGALEN+1];
int conteggio[4];

1) il campo "numeriordinati" contiene l'array "numeri" ordinato in senso crescente;
2) il campo "vocali" contiene le vocali (in minuscolo) presenti nel campo "frase"
e una sequenza di spazi a riempire i caratteri disponibili nella stringa;
3) il campo "consonanti" contiene le consonanti (in maiuscolo) presenti nel campo "frase"
e una sequenza di spazi a riempire i caratteri disponibili nella stringa;
4) il campo "cifre" contiene le cifre presenti nel campo "frase"
e una sequenza di spazi a riempire i caratteri disponibili nella stringa;
5) il campo "altro" contiene i caratteri NON alfanumerici presenti nel campo "frase"
e una sequenza di spazi a riempire i caratteri disponibili nella stringa;
6) il campo "conteggio" contiene nell'ordine il numero di consonanti, il numero di vocali, il numero di cifre
e il numero di caratteri non alfanumerici presenti nel campo "frase".

Il file "finale" deve essere ordinato rispetto al massimo del campo "numeriordinati".
Si richiede l'uso dell'allocazione dinamica di memoria (liste ordinate).
*/


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define ARRLEN 30
#define STRINGALEN 50

typedef
struct
{
int numeri[ARRLEN];
char frase[STRINGALEN+1];
}
t_dato;

int crea_archivio();


int main()
{
int esito;
esito = crea_archivio();
if (esito)
printf("Errore nell'apertura del file.\n");
return esito;
}


int crea_archivio()
{
FILE *f;

2 Risposte

  • Re: Qualcuno può aiutarmi a farlo? non come si deve fare

    Qui non si fanno gli esercizi scolastici al posto tuo.

    Fai uno sforzo e proponi del codice, anche non funzionante ma completo.
  • Re: Qualcuno può aiutarmi a farlo? non come si deve fare

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <ctype.h>

    #define ARRLEN 30
    #define STRINGALEN 50
    #define MAXREC 500


    void scambia (int a,int b);
    void scambia(int a, int b);

    int ordinamento(int *n);

    int vocale(int v);

    int consonante(int c);

    int cifra(int n);



    typedef
    struct
    {
    int numeri[ARRLEN];
    char frase[STRINGALEN+1];
    char nome1[STRINGALEN+1]
    }
    t_dato;

    typedef
    struct
    {
    int numeriordinati[ARRLEN];
    char vocali[STRINGALEN+1];
    char consonanti[STRINGALEN+1];
    char cifre[STRINGALEN+1];
    char altro[STRINGALEN+1];
    int conteggio[4];
    }
    f_dato;


    int crea_archivio();


    int main()
    {
    FILE *f,*g;
    t_dato x;
    f_dato y;
    int i,k,n;//temp;
    srand(time(0));
    n = MAXREC + rand() % MAXREC;
    if ((f = fopen("archivio","wb")))

    {
    for (k = 0; k < n; k++)
    {
    for (i=0; i<ARRLEN; i++)
    x.numeri=rand()%10000;
    for (i=0;i < STRINGALEN; i++)

    {
    x.frase= 33 + rand()%94;
    x.nome1= 33 + rand()%94;

    }

    x.frase[STRINGALEN]='\0';
    x.nome1[STRINGALEN]='\0';
    fwrite(&x,sizeof(t_dato),1,f);

    }

    fclose(f);

    }





    return 0;

    }
    int i,j,k,a[N];

    for(i=0; i < N; i++)
    {scanf("%d", &a);}

    printf("\n\n");


    for(i=0; i < N-1; i++)
    {
    or(j=i+1; j < N; j++){

    if(a[j]<a){
    k=a;
    a=a[j];
    a[j]=k;}
    else{}}}

    printf("\n\n");

    for(i=0;i<N;i++){
    printf("%d\n", a);}

    system("PAUSE");
    return 0;}




    { int esito;
    esito = crea_archivio();
    if (esito)
    printf("Errore nell'apertura del file.\n");
    return esito;
    }

    int vocale(int v){
    switch (v){

    case 'a': return 1;
    case 'e': return 1;
    case 'i': ;
    case 'o': ;
    case 'u': ;
    default: return 0;

    }
    }

    int consonante(int c){
    switch (c){
    case 'B': ;
    case 'C': ;
    case 'D': ;
    case 'F': return 1;
    case 'G': ;
    case 'H': ;
    case 'L': ;
    case 'M': ;
    case 'N': ;
    case 'P': ;
    case 'Q': ;
    case 'R': return 1;
    case 'S': return 1;
    case 'T': ;
    case 'V': ;
    case 'Z': ;
    default: return 0;




    }
Devi accedere o registrarti per scrivere nel forum
2 risposte