Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [C] Inserimento giorno,mese,anno

    Salve a tutti !
    Sto realizzando un programma che calcoli il codice fiscale e vorrei modificare la parte dell'inserimento di giorno,mese e anno...per ora l'ho fatto con 3 scanf, ma vorrei realizzarlo in questo modo :
    GG/MM/AAAA .
    La mia domanda é : é possibile fare in modo che le sbarrette siano già inserite e l'utente possa mettere i numeri??O devo fare un controllo per vedere se ha messo le sbarrette??? :P
    Altra cosa, sapreste dirmi una funzione per controllare se l'anno immesso é bisestile ??
    Grazie

  2. #2
    utilizza il motore di ricerca di questo forum con le seguenti parole chiave (ne abbiamo parlato diverse volte)

    1) x anno bisestile, cerca: anno bisestile

    2) x codice fiscale, cerca: codice fiscale

    3) x formattare il testo: mettere le "/" devi utilizzare
    la funzione (non standard) gotoxy() ed includere <conio.h> (o <conio.c> ... dipende dal compilatore C che stai utilizzando)
    cerca: gotoxy

    4) x gestire la data/ora di sistema cerca: time.h ora sistema

    per maggiori delucidazioni/dettagli, posta un pò di codice...
    ...Terrible warlords, good warlords, and an english song

  3. #3
    Utente di HTML.it L'avatar di unit1
    Registrato dal
    Feb 2004
    Messaggi
    354
    E se usassi un po' di grafica? es: API

  4. #4
    Originariamente inviato da unit1
    E se usassi un po' di grafica? es: API
    non ho idea di come si usi..avresti un link a qualche guida che mi spieghi un po' ??


    Per fare un programma che stami questa riga come si fa?

    Inserisci la data di nascita : / /
    che permetta di mettere i dati negli spazzi appositi...perché ho guardato nei vari thread ma non ho capito molto >_< non ho capito in gotoxy() che valori mettere..come faccio a calcolarli ? Grazie

  5. #5
    Originariamente inviato da Lasentinella
    non ho idea di come si usi..avresti un link a qualche guida che mi spieghi un po' ??


    Per fare un programma che stami questa riga come si fa?

    Inserisci la data di nascita : / /
    che permetta di mettere i dati negli spazzi appositi...perché ho guardato nei vari thread ma non ho capito molto >_< non ho capito in gotoxy() che valori mettere..come faccio a calcolarli ? Grazie
    Ho capito come si fa a stampare le sbarrette..il problema é come fare in modo che l'utente scriva tra e NON sopra di esse !!Perché se continua a scrivere le cancella helpppp :P

  6. #6
    Utente di HTML.it L'avatar di unit1
    Registrato dal
    Feb 2004
    Messaggi
    354
    http://www.aleax.it/TutWin32/tc.htm

    mi spiego: ti consigliavo di mettere un interfaccia grafica con 3 edit.

  7. #7
    Originariamente inviato da unit1
    http://www.aleax.it/TutWin32/tc.htm

    mi spiego: ti consigliavo di mettere un interfaccia grafica con 3 edit.
    Mmmm ho dato un'occhiatina ma la cosa mi sembra complicata..da quanto ho capito col C non si può fare quello che volevo..
    ma é possibile mettere 3 edit come dici te nel codice senza avere 32084732 righe di codice complicatissime ? :P
    Grazie ancora per l'aiuto

  8. #8
    una roba del genere (ovviamente da ottimizzare)
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <windows.h>
    
    void gotoxy(int x, int y)
    {
        COORD coor; 
        HANDLE hOutput; 
        hOutput = GetStdHandle(STD_OUTPUT_HANDLE); 
        coor.X = x; 
        coor.Y = y; 
        SetConsoleCursorPosition(hOutput,coor); 
    }
    
    int main()
    {
        char c;                  // accetta input da tastiera
        char j=6;                // contatore generico (tiene traccia della colonna in cui ci troviamo)
        char g=0, m=0, a=0;      // contatori generici (g=giorno, m=mese, a=anno)
        char gg[3]="\0";         // cattura il giorno
        char mm[3]="\0";         // cattura il mese
        char aa[5]="\0";         // cattura l'anno
        char sw=1;               // muove il cursore: 1=si posiziona sul campo1, 2=...campo2, 3=...campo3
        
        // setto le dimensioni del prompt: 80colonne x 25righe
        system("mode con: cols=80 lines=25");
        
        // mi posiziono alla riga24 e scrivo...
        gotoxy(0,24);
        printf("[TAB] next  [BACKSPACE] back  [ESC] reset  [INVIO] submit");
        
        // mi posiziono alla riga0 e scrivo...
        gotoxy(0,0);
        printf("DATA: 00/00/0000");
        
        // sposto il cursore alla colonna 6
        gotoxy(6,0);
        
        // ciclo infinito
        while(1)
        {
            // accetto l'imput da tastiera (1 char alla volta)
            c=getch();     
            
            // se è stato premuto il tasto backspace
            if(c==8)                     
            {
                // se il cursore si trova sulla colonna1 (giorno) resto lì
                if(sw==1)
                { 
                    gotoxy(6,0);
                    printf("00");
                    gotoxy(6,0);
                    gg[0]='\0';
                    g=0;            
                }
                // se il cursore si trova sulla colonna2 (mese) mi sposto sulla colonna1 (giorno)
                else if(sw==2)
                {
                    gotoxy(6,0);
                    printf("00");
                    gotoxy(6,0);
                    sw=1;
                    j=6;
                    gg[0]='\0';
                    g=0;
                }
                // se il cursore si trova sulla colonna3 (anno) mi sposto sulla colonna2 (mese)
                else if(sw==3) 
                {
                    gotoxy(9,0);
                    printf("00");
                    gotoxy(9,0);
                    sw=2;
                    j=9;
                    mm[0]='\0';
                    m=0;
                }    
            }
            // se è stato premuto il tasto tab
            else if(c==9) 
            {
                // se... cursore colonna1 (gg) mi sposto sulla colonna2 (mm) 
                if(sw==1) 
                {
                    gotoxy(9,0);
                    printf("00");
                    gotoxy(9,0);
                    sw=2;
                    j=9;
                    mm[0]='\0';
                    m=0;
                }
                // se.. cursore colonna2 (mm) mi sposto sulla colonna3 (aa)
                else if(sw==2)
                {
                    gotoxy(12,0);
                    printf("0000");
                    gotoxy(12,0);
                    sw=3;
                    j=12; 
                    aa[0]='\0';
                    a=0;
                }
                // se.. cursore colonna3 (aa) resto lì
                else if(sw==3)
                {
                    gotoxy(12,0);
                    printf("0000");
                    gotoxy(12,0);
                    aa[0]='\0';
                    a=0;
                }
            }
            // se è stato premuto il tasto esc/escape (azzero le variabili e mi posiziono sul campo1 (gg)
            else if(c==27)
            {
                g=m=a=0;
                gg[0]='\0';
                mm[0]='\0';
                aa[0]='\0';
                gotoxy(6,0);
                printf("00/00/0000");
                gotoxy(6,0);
                sw=1;
                j=6;     
            }
            // se è stato premuto il tasto invio/return (chiudo le variabili ed esco dal ciclo while())
            else if(c==13)               
            {    
                gg[2]='\0';
                mm[2]='\0';
                aa[4]='\0';
                break;
            }    
            // altrimenti inserisco l'input (c) nelle variabili gg, mm e aa
            else                          
            {
                // se incontro il primo slash "/" lo salto e mi posiziono sul campo2 (mm)                          
                if(j==8)                 
                {
                    j=9;
                    gotoxy(9,0);           
                }
                // se incontro il secondo slash "/" lo salto e mi posiziono sul campo3 (aa)
                else if(j==11)           
                {
                    j=12;
                    gotoxy(12,0);           
                }
                
                // altrimenti sono campi validi quindi li vado a memorizzare nelle variabili
                
                // il cursore (j) si trova all'interno del campo giorno gg
                if(j>=6 && j<= 7)        
                {
                    sw=1;
                    gg[g]=c;
                    printf("%c", gg[g]);
                    j++;
                    g++;
                }
                // il cursore (j) si trova all'interno del campo mese mm
                else if(j>=9 && j<= 10) 
                {
                    sw=2;
                    mm[m]=c;
                    printf("%c", mm[m]);
                    j++;
                    m++;
                }             
                // il cursore (j) si trova all'interno del campo anno aa
                else if(j>=12 && j<=15) 
                {
                    sw=3;
                    aa[a]=c;
                    printf("%c", aa[a]);
                    j++;
                    a++;
                }             
            }    
        }
            
        printf("\n\nDati Inseriti: %s/%s/%s\n", gg, mm, aa);
        system("pause");
        return 0;    
    }
    n.b. se ricevi qualche errore di compilazione (conflitto per via di gotoxy()) togli la parte di codice scritta in verde
    ...Terrible warlords, good warlords, and an english song

  9. #9
    Perfetto !!!!!! Solo 2 domandine :

    1)

    //setto le dimensioni del prompt: 80colonne x 25righe
    system("mode con: cols=80 lines=25");
    se lascio questa parte di codice mi da errore..dice "undefined symbol system in module [nomefile]. Devo mettere una qualche libreria ? Perché ho provato a togliere questa parte di codice (che, se ho capito bene, suddivide lo schermo in 80c x 25r)ma sfasa un po' il cursore...

    2)
    // se è stato premuto il tasto backspace
    if(c==8)
    {
    Come fa ad associare il tasto backspace a c=8 ????Dove glielo dici??Cioé, c non é una semplice variabile???

  10. #10
    upp
    johnny rispondi alle mie domande sopraaa grazie


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.