Repository 32bit  Forum
Repository 64bit  Wiki

[Utilità del Cavolo] Programma Gestione Figurine [RISOLTO]

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

Re: [Utilità del Cavolo] Programma Gestione Figurine

Messaggioda Blallo » mer mag 19, 2010 10:14

in effetti senza quello compila
però ora non parte proprio
lo analizzo un altro po'
Io sono il detective Arsenio Magret, e porto sempre la camicia TATUATA!
Avatar utente
Blallo
Packager
Packager
 
Messaggi: 3226
Iscritto il: ven ott 12, 2007 10:37
Località: Torino / Torremaggiore (FG)
Nome Cognome: Savino Liguori
Slackware: 14.1 / 12.2
Kernel: 3.12.2-ck
Desktop: Openbox

Re: [Utilità del Cavolo] Programma Gestione Figurine

Messaggioda Mario Vanoni » mer mag 19, 2010 14:43

jimmy_page_89 ha scritto:in effetti senza quello compila
però ora non parte proprio
lo analizzo un altro po'

Oggi e domani non ho tempo, nipotina di 13 mesi!
Concordo con j0kers, lo stesso errore tuo,
sempre nelle righe dove usi "int N".

PS Programma _ben_ riscritto, non mi piacciono, sono l'eccezione,
i messaggi, ma usando tastature US-ASCII e sempre LANG=US ...
Mario Vanoni
Iper Master
Iper Master
 
Messaggi: 3174
Iscritto il: lun set 03, 2007 20:20
Località: Cuasso al Monte (VA)
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey

Re: [Utilità del Cavolo] Programma Gestione Figurine

Messaggioda Blallo » mer mag 19, 2010 14:54

Mario Vanoni ha scritto:Oggi e domani non ho tempo, nipotina di 13 mesi!
Concordo con j0kers, lo stesso errore tuo,
sempre nelle righe dove usi "int N".

tranquillo mario, il dovere prima di tutto :D

Codice: Seleziona tutto
#include <stdio.h>
#include <stdlib.h>
#define N 734
#define TA 200

void print_menu();
void open_file(FILE **fp, char buf[TA], int *vect);
void add(char buf[TA], int *vect);
void rem(char buf[TA], int *vect);
void check_less(int vect[N]);
void check_single(char buf[TA], int vect[N]);
void gen_less(FILE **fp, int vect[N]);
void saving_all(FILE **fp, int vect[N], int *chs);

int main()
{
    FILE *fp;
    char buf[TA];
    int vect[N];
    int chs=0, opt=0;

    open_file(&fp, buf, vect);
    while(chs==0)
   {
        print_menu(); //lo so che è inutile, ma mi piace mettere così :P
      fgets(buf, TA, stdin);
      sscanf(buf, "%d", &opt);
      switch(opt)
      {
          case 1:
                add(buf, vect);
                break;
            case 2:
                rem(buf, vect);
                break;
            case 3:
                check_less(vect);
                break;
            case 4:
                check_single(buf, vect);
                break;
            case 5:
                gen_less(&fp, vect);
                break;
            case 6:
                printf("Sto Salvando..\n");
                saving_all(&fp, vect, &chs);
                printf("Uscita\n");
                break;
            default:
                printf("Comando Errato\n");
                break;
      }
   }
    return EXIT_SUCCESS;
}

void open_file(FILE **fp, char buf[TA], int *vect)
{
    int opt, i=0, chk=0;

    if(((*fp)=fopen("figu.txt","r")) == NULL)
    {
        while(chk == 0)
        {
            printf("Il file non esiste! Che vuoi fare?\n");
            printf("1:Crea Nuovo File\n");
            printf("2:Esci\n");
            fgets(buf, TA, stdin);
            sscanf(buf, "%d", &opt);
            switch(opt)
            {
                case 1:
                    if(((*fp)=fopen("figu.txt","w"))==NULL)
                    {
                        printf("Errore Apertura File!\n");
                        exit(1);
                    }
                    fclose(*fp);
                    for(i=0;i<N;i++)
                        vect[i]=0;
                    chk=1;
                    break;
                case 2:
                    printf("Uscita\n");
                    chk=1;
                    break;
                default:
                    printf("Comando Errato\n");
                    break;
            }
        }
    }
    else
    {
        while((fscanf((*fp), "%d", vect[i])) == 1 && !feof(*fp))
            i++;
        fclose(*fp);
    }
}

void print_menu()
{
    printf("1:Aggiungi Figurine\n");
   printf("2:Rimuovi Figurine\n");
   printf("3:Figurine Mancanti\n");
   printf("4:Controlla Figurina\n");
   printf("5:Genera Mancanti\n");
   printf("6:Esci\n");
}

void add(char buf[TA], int *vect)
{
    int num, chk;

    printf("TAerminare con 0\n");
    while(chk == 0)
    {
        fgets(buf, TA, stdin);
        sscanf(buf, "%d", &num);
        if(num == 0)
            chk=1;
        else if(num > N)
            printf("Numero TAroppo Grande\n");
        else
        {
            if(vect[num-1] == 1)
                printf("Figurina Già Presente\n");
            else
                vect[num-1]=1;
        }
    }
}

void rem(char buf[TA], int *vect)
{
    int num, chk;

    printf("Terminare con 0\n");
    while(chk == 0)
    {
        fgets(buf, TA, stdin);
        sscanf(buf, "%d", &num);
        if(num == 0)
            chk=1;
        else if(num > N)
            printf("Numero TAroppo Grande\n");
        else
        {
            if(vect[num-1] == 0)
                printf("Figurina Già Assente\n");
            else
                vect[num-1]=0;
        }
    }
}

void check_less(int vect[N])
{
    int i, num=0;

   for(i=0;i<N;i++)
      if(vect[i] == 0)
         num++;

    printf("%d\n", num);
}

void check_single(char buf[TA], int vect[N])
{
    int num, chk=0;

    while(chk == 0)
    {
        fgets(buf, TA, stdin);
        sscanf(buf, "%d", &num);
        if(num==0)
            break;
        else if(num > N)
            printf("Numero TAroppo Grande\n");
        else
        {
          if(vect[num-1] == 1)
            printf("Presente\n");
          else
            printf("Assente\n");
        }
    }
}

void gen_less(FILE **fp, int vect[N])
{
    int i;

    if(((*fp)=fopen("mancanti.txt","w"))==NULL)
    {
        printf("Errore Apertura File!");
        exit(1);
    }

    for(i=0;i<N;i++)
    if(vect[i]==0)
        fprintf((*fp), "%d ", i+1);

    fclose(*fp);
}

void saving_all(FILE **fp, int vect[N], int *chs)
{
    int i;

    if(((*fp)=fopen("figu.txt","w")) == NULL)
    {
        printf("Errore Apertura File");
      exit(1);
    }

   for(i=0;i<N;i++)
        fprintf((*fp), "%d ", vect[i]);

    (*chs)=1;

    fclose(*fp);
}

ho provveduto a togliere tutte le int N ed effettivamente compila
però fa un comportamento sgradito alla open_file, che ora analizzerò
mi crea il file anche se scelgo l'opzione 2 ed esce

Mario Vanoni ha scritto:PS Programma _ben_ riscritto, non mi piacciono, sono l'eccezione,
i messaggi, ma usando tastature US-ASCII e sempre LANG=US ...

che vuol dire?
Io sono il detective Arsenio Magret, e porto sempre la camicia TATUATA!
Avatar utente
Blallo
Packager
Packager
 
Messaggi: 3226
Iscritto il: ven ott 12, 2007 10:37
Località: Torino / Torremaggiore (FG)
Nome Cognome: Savino Liguori
Slackware: 14.1 / 12.2
Kernel: 3.12.2-ck
Desktop: Openbox

Re: [Utilità del Cavolo] Programma Gestione Figurine

Messaggioda Blallo » mer mag 19, 2010 15:10

tutto a posto, dovevo solo mettere una exit al case 2: nello switch della open_file
Codice: Seleziona tutto
case 2:
printf("Uscita\n");
exit(0);
break;

se avete qualche altro suggerimento non esitate :D
Io sono il detective Arsenio Magret, e porto sempre la camicia TATUATA!
Avatar utente
Blallo
Packager
Packager
 
Messaggi: 3226
Iscritto il: ven ott 12, 2007 10:37
Località: Torino / Torremaggiore (FG)
Nome Cognome: Savino Liguori
Slackware: 14.1 / 12.2
Kernel: 3.12.2-ck
Desktop: Openbox

Re: [Utilità del Cavolo] Programma Gestione Figurine

Messaggioda Blallo » mer mag 19, 2010 15:15

alla riga 96 mi da questo warning
Codice: Seleziona tutto
/home/liguori/figs/main.c|96|warning: format ‘%d’ expects type ‘int *’, but argument 3 has type ‘int’|

anche se il programma gira bene
EDIT non gira un piffero :(
RIEDIT: risolto, era banale, bastava sostituire nella fscanf vect[i] con &vect[i]
ora tutto funziona
Io sono il detective Arsenio Magret, e porto sempre la camicia TATUATA!
Avatar utente
Blallo
Packager
Packager
 
Messaggi: 3226
Iscritto il: ven ott 12, 2007 10:37
Località: Torino / Torremaggiore (FG)
Nome Cognome: Savino Liguori
Slackware: 14.1 / 12.2
Kernel: 3.12.2-ck
Desktop: Openbox

Re: [Utilità del Cavolo] Programma Gestione Figurine

Messaggioda Mario Vanoni » mer mag 19, 2010 15:38

jimmy_page_89 ha scritto:tutto a posto, dovevo solo mettere una exit al case 2: nello switch della open_file
Codice: Seleziona tutto
case 2:
printf("Uscita\n");
exit(0);
break;

se avete qualche altro suggerimento non esitate :D

Nipotina che dorme ...

Un break; dopo un exit(0); e` inutile.

Ma non funziona ancora l'ultima versione tua:
Codice: Seleziona tutto
root@va2:~# gcc -O2 -s -static -o cavolo cavolo3.c
root@va2:~# cavolo
Il file non esiste! Che vuoi fare?
1:Crea Nuovo File
2:Esci
1
1:Aggiungi Figurine
2:Rimuovi Figurine
3:Figurine Mancanti
4:Controlla Figurina
5:Genera Mancanti
6:Esci
6
Sto Salvando..
Uscita
root@va2:~# cavolo
Segmentation fault
root@va2:~#

Per i messaggi:
printf("Numero TAroppo Grande\n");
printf("Figurina Già Presente\n");
Nel nvi le lettere accentate diventano illegibili,
se usi un sistema 7-bit US-ASCII.
Idem con il grep, less e more.
Mario Vanoni
Iper Master
Iper Master
 
Messaggi: 3174
Iscritto il: lun set 03, 2007 20:20
Località: Cuasso al Monte (VA)
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey

Re: [Utilità del Cavolo] Programma Gestione Figurine

Messaggioda Mario Vanoni » mer mag 19, 2010 15:54

jimmy_page_89 ha scritto:alla riga 96 mi da questo warning
Codice: Seleziona tutto
/home/liguori/figs/main.c|96|warning: format ‘%d’ expects type ‘int *’, but argument 3 has type ‘int’|

anche se il programma gira bene
EDIT non gira un piffero :(
RIEDIT: risolto, era banale, bastava sostituire nella fscanf vect[i] con &vect[i]
ora tutto funziona

Confermo, ora riparte senza errore.
Mario Vanoni
Iper Master
Iper Master
 
Messaggi: 3174
Iscritto il: lun set 03, 2007 20:20
Località: Cuasso al Monte (VA)
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey

Re: [Utilità del Cavolo] Programma Gestione Figurine

Messaggioda Blallo » mer mag 19, 2010 16:09

Mario Vanoni ha scritto:Per i messaggi:
printf("Numero TAroppo Grande\n");
printf("Figurina Già Presente\n");
Nel nvi le lettere accentate diventano illegibili,
se usi un sistema 7-bit US-ASCII.
Idem con il grep, less e more.

sono su una semplice tastiera IT
il TA è dato da un Sostituisci applicato male :)
a questo punto per usarlo dappertutto sostituisco le accentate con lettera + apostrofo, o non c'è neppure quello sulla US-ASCII?
Io sono il detective Arsenio Magret, e porto sempre la camicia TATUATA!
Avatar utente
Blallo
Packager
Packager
 
Messaggi: 3226
Iscritto il: ven ott 12, 2007 10:37
Località: Torino / Torremaggiore (FG)
Nome Cognome: Savino Liguori
Slackware: 14.1 / 12.2
Kernel: 3.12.2-ck
Desktop: Openbox

Re: [Utilità del Cavolo] Programma Gestione Figurine

Messaggioda Mario Vanoni » mer mag 19, 2010 17:12

jimmy_page_89 ha scritto:sono su una semplice tastiera IT
a questo punto per usarlo dappertutto sostituisco le accentate con lettera + apostrofo, o non c'è neppure quello sulla US-ASCII?

L'ASCII character set ha 127 caratteri, compresi gli accenti.
Quindi e`, perche', ecc., no problems con sistemi non IT.

Ma a questo punto, permetti una osservazione generale:
perche' non mettere i messaggi in inglese a` la UNIX dei tempi?
Codice: Seleziona tutto
root@va2:~# ls eeee
ls: cannot access eeee: No such file or directory
root@va2:~#

Molto piu` compresibile per un informatico di altra lingua madre.
Mario Vanoni
Iper Master
Iper Master
 
Messaggi: 3174
Iscritto il: lun set 03, 2007 20:20
Località: Cuasso al Monte (VA)
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey

Precedente

Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron