Problema con linguaggio C

di il
9 risposte

Problema con linguaggio C

Buonasera a tutti apro questa discussione in cerca di consigli e aiuto.
Sto creando un programma ma ho delle difficoltà, devo implementare un algoritmo di ricerca di un post su social network.
Suppongo di avere un archivio di utenti e ogni utente deve avere un nome,cognome,sesso e data di nascita e per fare questo implemento questo:

#include <stdio.h>
#include <stdlib.h>
#define MAXUTENTI 5

typedef struct {
int giorno;
char mese[20];
int anno;
}born;
typedef struct {
char nome[20];
char cognome[20];
char sesso[20];
born data_nascita;
}utente;

typedef enum {false,true} Boolean;

int main()
{
    utente UTENTI[MAXUTENTI];
    char nome[20],cognome[20],sesso[20],mese[20];
    int giorno,anno,inseriti,operazione,i,j;
    Boolean fine,trovato;
    char scelta,c;
    inseriti=0;
    fine = false;

    while(inseriti<MAXUTENTI && !fine)
    {
        printf("Vuoi inserire un utente?");
        scelta = getchar();
        c=(int)getchar();
        if(scelta == 's' || scelta == 'S')
        {
            printf("Inserisci un nome:");
            gets(UTENTI[inseriti].nome);
            printf("Inserisci il cognome:");
            gets(UTENTI[inseriti].cognome);
            printf("Inserisci il sesso:");
            gets(UTENTI[inseriti].sesso);
            printf("Inserisci il giorno di nascita:");
            scanf("%d",&UTENTI[inseriti].data_nascita.giorno);
            printf("Inserisci il mese di nascita:");
            scanf("%s",UTENTI[inseriti].data_nascita.mese);
            printf("Inserisci anno di nascita:");
            scanf("%d",&UTENTI[inseriti].data_nascita.anno);
            inseriti ++;
           c= getchar();
        }
        else fine = true;
    }
    fine = false;

}
Dopo il main implemento molte più variabili perchè intendo utilizzarle dopo.
Il mio problema arriva ora, perchè dopo aver creato un numero finito di utenti devo fare questo :
ogni utente ha la possibilità di scrivere messaggi sulla propria pagina e sulle pagine degli altri utenti.
Ogni messaggio contiene
Autore
Testo
Numero mi piace
Destinatario

Come continuo? Pensavo di fare una struct, é una buona idea?
Oppure ci sta un altro modo per poter implementare il suddetto problema? Ringrazio in anticipo chi mi darà una risposta.

9 Risposte

  • Re: Problema con linguaggio C

    Ci sta che forse devi salvaguardare su disco, hai pensato ad un db? Puoi provare sqlite
  • Re: Problema con linguaggio C

    Ciao grazie per avermi risposto. Purtroppo è da poco tempo che sto imparando il linguaggio C , ho letto a cosa serve Sqlite e mi sembra una soluzione perfetta solo che se uno mi chiede di implementarlo non sono ancora in grado di farlo. Non so dopo aver aggiunto la libreria cosa andare a modificare . Se qualcuno sa farmi vedere come funziona su questo programma lo apprezzo molto. Perché poi il programma non finisce qui, devo implementare uno switch che mi fa fare varie operazioni con i post implementati.
  • Re: Problema con linguaggio C

    Ma è un esercizio scolastico? Se è così, hai/avete mai usato un DB? Forse non è questa la soluzione che il professore si aspetta ... dipende tutto da cosa avete già studiato ...
  • Re: Problema con linguaggio C

    Si, ma devo implementarlo con il linguaggio C , di programmi che utilizzano il database ho fatto tempo fa Mysql , ma non devo utilizzarlo in questo caso. Purtroppo deve essere implementato in linguaggio C , capisco che ci sono altri linguaggi molto più adatti. Il professore si aspetta un linguaggio C con record/ algoritmi inserimento e company abbiamo fatto solo il linguaggio C e le basi di HTML ( colore sfondo , testo le cose più semplici) spero che qualcuno possa aiutarmi
  • Re: Problema con linguaggio C

    Ma avete mai trattato i DB con il C? Non è una passeggiata ...
  • Re: Problema con linguaggio C

    Purtroppo no. Posso risolvere questo problema anche senza i Db?
  • Re: Problema con linguaggio C

    Usa delle strutture opportune e dei file, anche semplici file di testo.
  • Re: Problema con linguaggio C

    Ok, vorrei aggiungere una nuova struct insieme alle altre per inserire il "post" così:
     typedef struct {
    utente autore;
    char testo [100];
    int mi_piace;
    utente destinatario;
    } post;

    Se questo va bene, mi devo comportare come l'inserimento di un nuovo utente nell'archivio che ho postato all'inizio?
    Dove in questo caso inserisco un do-while e un ciclo if all'interno con il printf di: autore(nome e cognome) ,testo , mi piace , destinatario (nome e cognome). Posso fare cosi?
  • Re: Problema con linguaggio C

    Salve adesso il programma si presenta cosi:
    #include <stdio.h>
    #include <stdlib.h>
    #define MAXUTENTI 5
    #define dim 50
    
    
    typedef struct {
    int giorno;
    char mese[20];
    int anno;
    }born;
    typedef struct {
    char nome[20];
    char cognome[20];
    char sesso[20];
    born data_nascita;
    }utente;
    
    typedef enum {false,true} Boolean;
    
    int main()
    {
        FILE *ptr_file;
        char riga[dim];
        char nomepost [dim];
        utente UTENTI[MAXUTENTI];
        char nome[20],cognome[20],sesso[20],mese[20];
        int giorno,anno,inseriti,operazione,i,j;
        Boolean fine,trovato;
        char scelta,c;
        inseriti=0;
        fine = false;
    
        while(inseriti<MAXUTENTI && !fine)
        {
            printf("Vuoi inserire un utente?");
            scelta = getchar();
            c=(int)getchar();
            if(scelta == 's' || scelta == 'S')
            {
                printf("Inserisci un nome:");
                gets(UTENTI[inseriti].nome);
                printf("Inserisci il cognome:");
                gets(UTENTI[inseriti].cognome);
                printf("Inserisci il sesso:");
                gets(UTENTI[inseriti].sesso);
                printf("Inserisci il giorno di nascita:");
                scanf("%d",&UTENTI[inseriti].data_nascita.giorno);
                printf("Inserisci il mese di nascita:");
                scanf("%s",UTENTI[inseriti].data_nascita.mese);
                printf("Inserisci anno di nascita:");
                scanf("%d",&UTENTI[inseriti].data_nascita.anno);
                inseriti ++;
               c= getchar();
            }
            else fine = true;
        }
        fine = false;
    
        for(i=0;i<inseriti;i++)
        { // implementazione vuoi inserire un post?
            
            // inserire un if per scelta
        printf(" inserisci il nome del post; \n");
        scanf("%s",nomepost); 
        ptr_file = fopen(nomepost,"w");
    
        if (ptr_file)
        {
            printf("file ok\n");
            fprintf(ptr_file,"pasta alla carbonara\n");
            printf ("scrittura ok\n");
        }
        else
        {
            printf("errore sul file \n");
        }
        fclose(ptr_file);
    
        }
    
    }
    Ho un paio di domande :
    1) Come devo modificare dove sta fprint per far inserire un testo?
    2) Oltre a crearmi un file.txt (ultima parte del programma postato) come posso aggiungere autore, numero mi piace del post e destinatario? Perchè successivamente dovrei implementare uno switch che mi permetta di ricercare un post di un utente.
    Grazie in anticipo per la risposta.
Devi accedere o registrarti per scrivere nel forum
9 risposte