labatteria.it • Leggi argomento - Problema Programmazione [C++]


Problema Programmazione [C++]

Qui nessuna conversazione sara' off-topic: tutti gli argomenti sono ammessi (eccetto quelli che rientrano negli altri forum).

Messaggioda Fippo1992 il mer giu 03, 2009 8:56 pm

Salve forumisti programmatori, ho bisogno di una mano.
La questione è questa: Entro la fine dell'anno devo consegnare un''esercitazione per informatica in cui ci è stato chiesto di programmare una rubrica, strutturata con inserimento di un nome, rimozione di un nome, ordinamenti vari e salvataggio su memoria di massa, tutto con annessa grafica (winbgim.h).
Il mio problema sta nell'inserimento.
Ho fatto una finestra grafica che comprende un tastierino in stile cellulare, con i 12 tasti che costituiscono un cellulare vero e proprio, e utilizzo quel sistema per inserire il nome. Il codice è strutturato in maniera che, quando l'utente decide di salvare, viene chiamata una funzione, che chiama un altra funzione, che a sua volta mette in output a video il carattere scelto e ritorna il carattere scelto (è un po' complicato da spiegare... :D). Ho fatto i dovuti test, la funzione dovrebbe funzionare... Ma non funziona...! In pratica, alla fine io metto in output nome cognome e numero di telefono che precedentemente avevo inserito... ma non ci sono... non mi da nulla come output...! Sono ormai due giorni che ci penso, e non ne vengo a capo.

Ora, postare qui il codice non mi sembra pratico, sono circa 350 righe di codice... A chi avesse voglia di aiutarmi 10 minuti regalo un rullo nuovo :lol:
Scherzi apparte... O ve lo invio per mail... o per Messenger... Ma aiutatemi! Confido in voi! ;) :tru
Affiliato con l'antagonista di discussione marcods86 ~ ALLEANZA BATTERISTI SFIGATI IN AMORE ~ Membro della "Rumorosissima Alleanza Batteristi Bonzoniani"
Immagine
Avatar utente
Fippo1992
ho il ritmo nel sangue
ho il ritmo nel sangue
 
Messaggi: 774
Iscritto il: sab ago 09, 2008 10:48 am
Località: San Romano, Montopoli in V/A, Pisa

Messaggioda Barattolo il mer giu 03, 2009 9:33 pm

posta il file, detto cosi' non ci ho capito un granchè, a parte che ignoro (felicemente) come convivano c++ e windows. ma non lo puoi fare per un'altra piattaforma? :D
a parte questo cosa vuol dire "metto in output"? lo invii a qualche stream?
fatti una funzioncina di debug, che ti stampi da qualche parte (un file, una finestra, qualcosa) quello che vuoi. poi controlla il contenuto del posto dove stai cercando di andare a scrivere, magari lo stai mancando completamente e scrivendo nel vuoto cosmico.
aspetto il rullo, ovviamente... anzi, avrei bisogno di un hi hat...


edit: la pubblicita' sopra questo post offre "creme per pelli secche" e "batterie per cellulari". lol!
"An artist is someone who produces things that people don't need to have but that he - for some reason - thinks it would be a good idea to give them."
"Humans have a marked appreciation for beauty and aesthetics which, combined with the human desire for self-expression, has led to cultural innovations such as art, literature and music."
Confuso possessore di "un pedale del tamburo basso del doppio del cobra del ferro di Tama"
Avatar utente
Barattolo
guru delle pelli
guru delle pelli
 
Messaggi: 2529
Iscritto il: mar mar 09, 2004 7:26 pm
Località: :|

Messaggioda The Maus il mer giu 03, 2009 9:40 pm

:D In effetti l'ultima parte è un po' confusa..

per salvare intendi nella tua lista/rubrica interna o su supporto di massa?


PPS senza un minimo di codice o una spiegazione più dettagliata su come hai strutturato la rubrica si fa dura cmq
My Drum Kit! * Member of: Sacra Alleanza Batteristi Rolandiani * Alleanza dei batteristi pelatoni * alleanza dei videogiocatori * Dirty old drummers alliance * Yamaha Elegance Club * Santa Alleanza degli Allievi o Ex Allievi di G.Gandino * Associazione Batteristi Centauri
Avatar utente
The Maus
Buddy Rich
Buddy Rich
 
Messaggi: 4188
Iscritto il: gio feb 15, 2007 11:28 am
Località: Torino

Messaggioda Fippo1992 il mer giu 03, 2009 10:29 pm

@Barattolo con "metto in output" intendo il semplice utilizzo del cout ^^
Ho provato a fare alcune modifiche. Adesso posto alcune righe di codice, le più significative. preparatevi a un post luuuungo XD

Questa è la finestra grafica:

Immagine

allora, questo è il ciclo principale:
Codice: Seleziona tutto
//Ciclo finchè voglio inserire il nome
      {
            GetMouseClick(x,y);
            if(Il Clic è all'interno del tastierino)
            {
                  Serie di controlli per controllare in quale "quadratino" del tastierino il clic è caduto.
                        } //Fin qui vi assicuro che TUTTO torna, ho fatto tutti i vari controlli e funziona.
                  if (InvioPremuto==0)
                  {
                        char app=StampaCarattere(lettera,SelezLettera,UltimoNumero,Lunghezza);
                        appoggio[Lunghezza]=app;
                        strcpy(Rubrica[nNomi].Nome,appoggio);
                  }
                  else if (InvioPremuto==1)
                  {
                        char app=StampaCarattere(lettera,SelezLettera,UltimoNumero,Lunghezza);
                        appoggio[Lunghezza]=app;
                        strcpy(Rubrica[nNomi].Cognome,appoggio);
                  }
                  else if (InvioPremuto==2)
                  {
                        char app=StampaNumero(lettera,Lunghezza);
                        appoggio[Lunghezza]=app;
                        strcpy(Rubrica[nNomi].Telefono,appoggio);
                  }
            }


I problemi inziano dai controlli su InvioPremuto. InvioPremuto è un contatore che tiene di conto quante volte l'utente ha cliccato sull'invio :D prima del clic, salva le lettere sul nome, dopo un clic sul cognome, poi sul numero.
Al momento in cui ho scritto il post iniziale, la variablie array appoggio[20] e lo strcpy non c'erano. Le ho messe dopo, in seguito vi dirò i risultati.

Qui metto una parte della funzione StampaCarattere, che richiamo sopra:

Codice: Seleziona tutto
switch(n)
      {
            case(10):{
                          if(Ultimo!=n)
                                Lunghezza++;
                          switch(SelezLettera[0][1])
                          {
                                case(0):{
                                             outtextxy(330+15*Lunghezza,90,"a");
                                             app='a';
                                             break;
                                        }
                                case(1):{
                                             outtextxy(330+15*Lunghezza,90,"b");
                                             app='b';
                                             break;
                                        }
                                case(2):{
                                             outtextxy(330+15*Lunghezza,90,"c");
                                             app='c';
                                             break;
                                        }
                          }
                          if(SelezLettera[0][1]!=2)
                                SelezLettera[0][1]++;
                          for(int i=0; i<3; i++)
                                for(int j=0; j<3; j++)
                                      if(i!=0||j!=1)
                                            SelezLettera[i][j]=0;
                          Ultimo=n;
                          cout<<app<<"        "<<Lunghezza<<endl;
                          return app;
                          break;
                    }
      .
      .
      .
}


Eccolo qua. Ho messo solo il caso 10, che equivale al secondo tasto, per le lettere 'a', 'b', 'c'.
Passo alla spiegazione:
La variabile Ultimo ritorna tutte le volte modificata alla funzione aggiungi (c'è la '&'): il suo compito è memorizzare l'ultimo carattere su cui l'utente ha cliccato, così da comportarsi di conseguenza (se Ultimo==n, significa che l'utente vuole scrivere, ad esempio, almeno una 'b'. Quindi viene cancellata la 'a' e scritta una 'b'. Altrimenti, la lunghezza viene aumentata, perchè all'utente la 'a' piace lì dov'è).

Il vettore SelezLettera mi serve per memorizzare quante volte di seguito l'utente ha cliccato sullo stesso tasto consecutivamente. Se è a 0, significa che l'utente non ha cliccato questo numero nel suo clic precedente, quindi da la prima lettera, poi dopo lo vediamo aumentare così che l'utente se clicca di uovo sul tasto della 'a', la vedrà sostituita con una 'b'. Quindi, viene resettato tutto SelezLettera per ovvii motivi e, come descritto sopra, aumetata la componente appena utilizzata. Una soluzione che poteva essere ridotta in qualcosa di meno, ma che ho trovato abbastanza pratica per la mia logica.

Quindi, Ultimo diventa uguale a n, per la funzione che ho spiegato sopra.
Quel cout mi è servito per alcuni controlli su Lunghezza (che mi aiuta a decidere dove deve essere posizionata la lettera che ho selezionato, sia a livello grafico che a livello di sistema.

Alla fine la variabile app, che conteneva il carattere risultante di tutte 'sti affaracci ritorna alla funzione di prima, che si andrebbe a salvare prima in appoggio[], infine nel mio struct.

L'output prodotto, se io scrivo 'Nome', 'Cognome', '1234567890', è il seguente:

88me? ~cog88me? ~1234567890

Inserisco anche il link al download del file eseguibile:
http://www.2shared.com/file/6089854/714 ... etto1.html

PS: Ha un funzionamento abbastanza limitato: se volete scrivere, per esempio, 'abaco', dovete cliccare, in sequenza:

tasto 2 per inserire una 'a'
il tasto in basso a destra per aumentare lunghezza
tasto 2 per inserire una 'a'
tasto 2 per inserire una 'b'
di nuovo il tasto in basso a destra
tasto 2 per inserire una 'a'
ancora il tasto in basso a destra
tasto 2 per inserire una 'c'
3 volte il tasto 6 per mettere la 'o'.
Affiliato con l'antagonista di discussione marcods86 ~ ALLEANZA BATTERISTI SFIGATI IN AMORE ~ Membro della "Rumorosissima Alleanza Batteristi Bonzoniani"
Immagine
Avatar utente
Fippo1992
ho il ritmo nel sangue
ho il ritmo nel sangue
 
Messaggi: 774
Iscritto il: sab ago 09, 2008 10:48 am
Località: San Romano, Montopoli in V/A, Pisa

Messaggioda The Maus il mer giu 03, 2009 10:45 pm

:D Maronn... Ufficio Complicazioni Affari Semplici eh (il tuo codice è un pochino contorto da seguire così a prima impressione:B )

8) ma la scelta masochistica del tastierino stile cellulare ti è imposta o l'ha voluta tu?

8) Non conosco il Winbigm-Borland (io ho sempre usato M$), ma utilizzi dei controlli (pulsanti, editbox) nella tua interfaccia o ti sei fatto tutto da zero?
My Drum Kit! * Member of: Sacra Alleanza Batteristi Rolandiani * Alleanza dei batteristi pelatoni * alleanza dei videogiocatori * Dirty old drummers alliance * Yamaha Elegance Club * Santa Alleanza degli Allievi o Ex Allievi di G.Gandino * Associazione Batteristi Centauri
Avatar utente
The Maus
Buddy Rich
Buddy Rich
 
Messaggi: 4188
Iscritto il: gio feb 15, 2007 11:28 am
Località: Torino

Messaggioda Fippo1992 il mer giu 03, 2009 10:52 pm

L'esser controto è dato dal fatto che uso due funzioni distinte per fare tutta 'sta cosa. ne uso due perchè la funzione del secondo codice mi serve tale e quale anche nella funzione di rimozione quindi l'ho messa a parte, ma mi ha dato davvero molte complicazioni...

la scelta masochista del tastierino stile cellulare l'ho voluta io perchè tutti in classe mia avevano fatto tutto un elenco delle lettere, cosa che a me non è piaciuta affatto e volevo fare qualcosa di un pochino originale :)

Yeah, TUTTO completamente da zero. Anche perchè la winbgim la conosco poco pure io XD

EDIT:
Dimanticavo di dire che nelle proposte (se ci saranno), non mi consigliate roba eccessivamente complicata. Con "eccessivamente complicata" intendo cose che non siano più complicate di quello che può aver fatto uno studente di informatica dopo 9 mesi soltanto di C++ :) sono ancora molto principiante nell'ambiente, e già le funzioni ricorsive le capisco male :x
Affiliato con l'antagonista di discussione marcods86 ~ ALLEANZA BATTERISTI SFIGATI IN AMORE ~ Membro della "Rumorosissima Alleanza Batteristi Bonzoniani"
Immagine
Avatar utente
Fippo1992
ho il ritmo nel sangue
ho il ritmo nel sangue
 
Messaggi: 774
Iscritto il: sab ago 09, 2008 10:48 am
Località: San Romano, Montopoli in V/A, Pisa

Messaggioda The Maus il mer giu 03, 2009 11:01 pm

:D io avevo implementato una tastiera simile su palmare (ma con MFC Microsoft) e per renderla quanto meno usabile ho dovuto scomodare i timer (se premi velocemente cicla fra le lettere del testo, se rilasci confermi la tua scelta).

C'è da dire che l'utilizzo dei controlli MFC un po' semplifica la vita. Facendo tutto da zero la cosa si complica un filino.

Diventa un po' lunga da spiegare qui però
My Drum Kit! * Member of: Sacra Alleanza Batteristi Rolandiani * Alleanza dei batteristi pelatoni * alleanza dei videogiocatori * Dirty old drummers alliance * Yamaha Elegance Club * Santa Alleanza degli Allievi o Ex Allievi di G.Gandino * Associazione Batteristi Centauri
Avatar utente
The Maus
Buddy Rich
Buddy Rich
 
Messaggi: 4188
Iscritto il: gio feb 15, 2007 11:28 am
Località: Torino

Messaggioda The Maus il mer giu 03, 2009 11:06 pm

In pratica...


Alla pressione sul tasto con testo "ABC" (es)

- memorizzavo in una variabile la prima lettera del testo (A in questo caso)
- lanciavo il timer
- se il timer scadeva (= l'utente non ha premuto più nulla) confermava la scelta e scrivevo il carattere sul display.
- se l'utente premeva ancora PRIMA dello scadere del timer, incrementavo il puntatore al carattere e memorizzavo nella variabile la lettera successiva (B)
e cosi via

ovviamente continuando a premere controllavo che il puntatore al carattere della stringa non sforasse e nel caso lo riportavo all'inizio

Insomma qualcosa del genere (son troppo fuso ora) spero di averti dato delle dritte utili
:tru
My Drum Kit! * Member of: Sacra Alleanza Batteristi Rolandiani * Alleanza dei batteristi pelatoni * alleanza dei videogiocatori * Dirty old drummers alliance * Yamaha Elegance Club * Santa Alleanza degli Allievi o Ex Allievi di G.Gandino * Associazione Batteristi Centauri
Avatar utente
The Maus
Buddy Rich
Buddy Rich
 
Messaggi: 4188
Iscritto il: gio feb 15, 2007 11:28 am
Località: Torino

Messaggioda Fippo1992 il gio giu 04, 2009 11:27 am

Maus, barattolo, grazie per aver risposto :D
Il fatto è questo: avevo già pensato a una cosa simile, solo che non so come farlo, alchè ho chiesto alla prof che a declinato la cosa perchè (mi sembra di aver capito) si andava a sforare in cose troppo complicate. Sicchè ho dovuto optare per una cosa simile...
E ancora non ne vengo a capo :x
Affiliato con l'antagonista di discussione marcods86 ~ ALLEANZA BATTERISTI SFIGATI IN AMORE ~ Membro della "Rumorosissima Alleanza Batteristi Bonzoniani"
Immagine
Avatar utente
Fippo1992
ho il ritmo nel sangue
ho il ritmo nel sangue
 
Messaggi: 774
Iscritto il: sab ago 09, 2008 10:48 am
Località: San Romano, Montopoli in V/A, Pisa

Messaggioda _zioDrum_ il gio giu 04, 2009 11:40 am

Sicuramente hai un problema sul tasto 8! :D

Per tutto il resto mi è venuto il mal di testa! Davvero, solo con dei frammenti di codice la vedo difficile capirci qualcosa in più...ormai con questo c# mi sono rammollito! :o :tru
Avatar utente
_zioDrum_
guru delle pelli
guru delle pelli
 
Messaggi: 2007
Iscritto il: ven giu 04, 2004 11:37 pm
Località: Ariano Irpino (av)

Messaggioda The Maus il gio giu 04, 2009 1:30 pm

:D Io fossi in te, a costo di sembrare banale, tornerei ad una vecchia e sana tastiera QWERTY su video che ti semplifica enormemente l'input dei dati.

:wink: meglio banali ma funzionanti :tru
My Drum Kit! * Member of: Sacra Alleanza Batteristi Rolandiani * Alleanza dei batteristi pelatoni * alleanza dei videogiocatori * Dirty old drummers alliance * Yamaha Elegance Club * Santa Alleanza degli Allievi o Ex Allievi di G.Gandino * Associazione Batteristi Centauri
Avatar utente
The Maus
Buddy Rich
Buddy Rich
 
Messaggi: 4188
Iscritto il: gio feb 15, 2007 11:28 am
Località: Torino

Messaggioda Barattolo il gio giu 04, 2009 10:01 pm

ci ho dato un'occhiata solo ora e ho concluso che
1) non ci ho capito un tubo, cos'e' che non funziona alla fine? il tasto 8? :D
2) devi scrivere molto, molto, molto, molto meno codice...
3) ma che ne diresti di emulare la tastiera del cellulare con, per dire, il tastierino numerico? giusto per schivare mouse e interfaccie grafiche che mi stanno veramente simpatiche

esempio (sbrigativo perche' ho sonno)
questo e' un pezzo del tuo codice
Codice: Seleziona tutto
      switch(SelezLettera[0][1]) {
            case(0):{
                         outtextxy(330+15*Lunghezza,90,"a");
                         app='a';
                         break;
                    }
            case(1):{
                         outtextxy(330+15*Lunghezza,90,"b");
                         app='b';
                         break;
                    }
            case(2):{
                         outtextxy(330+15*Lunghezza,90,"c");
                         app='c';
                         break;
                    }
      }
      if(SelezLettera[0][1]!=2)
            SelezLettera[0][1]++;
      for(int i=0; i<3; i++)
            for(int j=0; j<3; j++)
                  if(i!=0||j!=1)
                        SelezLettera[i][j]=0;
      Ultimo=n;
      cout<<app<<"        "<<Lunghezza<<endl;
      return app;


e' riassumibile in
Codice: Seleziona tutto
      // visto che sembrano esserci questioni di conversione
      // da string a char, alloco questa mini-stringa che
      // usero' in entrambe le maniere :D
      char lettera[2];
      // questo serve a "terminare" la stringa
      lettera[1] = '\0';

      // questa e' la funzione "resto", mi assicura che
      // questa variabile stia tra 0 e 2, ciclando quando
      // diventa maggiore
      SelezLettera[0][1] %= 2;
      if( SelezLettera[0][1] == 0 )
         lettera[0] = 'a';
      else if( SelezLettera[0][1] == 1 )
         lettera[0] = 'b';
      else if( SelezLettera[0][1] == 2 )
         lettera[0] = 'c';
      // avrei potuto riassumere ulteriormente in
      // lettera[0] = SelezLettera[0][1] + 'a';
      // ma forse non era il caso!

      // l'if non serve piu' perche' tanto sopra ho messo il %
      // inoltre in questo modo continuera' a ciclare tra
      // a, b, c, a, b, c, a, b, c...
        SelezLettera[0][1]++;

      outtextxy(330+15*Lunghezza,90,lettera);

      // questo invece non sono tanto sicuro che sia giusto...
      // vuoi resettare tutti i contatori di pressione delle
      // lettere? se si, ci va un && invece di ||   
      // pero' non so quanto serva; non basterebbe controllare
      // prima che se ultimo!=n allora azzero SelezLettera[0][1]
      // e basta?
      for(int i=0; i<3; i++)
            for(int j=0; j<3; j++)
                  if(i!=0||j!=1)
                        SelezLettera[i][j]=0;
      Ultimo=n;
      // ma... una bella printf???
      cout<<lettera[0]<<"        "<<Lunghezza<<endl;
      return lettera[0];

effettivamente con i commenti non sembra tanto sintetico :D ma ci sono meno chiamate, meno if, meno righe ripetute, meno variabili.
va opportunamente generalizzato per tutte le lettere, ma lo lascio fare a te.
comunque spero ti sia arrivato quello che voglio dire: evita come la peste il codice ridondante, rendi tutto piu' "locale" evitando di usare una variabile che hai assegnato 1000 righe sopra, fai funzioni generiche, cerca di renderlo piu' leggibile che puoi, compatibilmente con la leggibilita' ... eccetera eccetera. anche la matrice e' una discreta fonte di complicazione: sicuro non ti basti un vettore? tanto i tasti sono numerati progressivamente da 0 a 9. puoi anche definire delle costanti (con #define), ad esempio KEY_1 potrebbe valere 3, per indicare che le informazioni riguardo il tasto 1 sono nella posizione 3 del vettore.

e magari posta il codice, invece dell'eseguibile, visto anche che il mio windows ormai non parte da piu' di 6 mesi...
"An artist is someone who produces things that people don't need to have but that he - for some reason - thinks it would be a good idea to give them."
"Humans have a marked appreciation for beauty and aesthetics which, combined with the human desire for self-expression, has led to cultural innovations such as art, literature and music."
Confuso possessore di "un pedale del tamburo basso del doppio del cobra del ferro di Tama"
Avatar utente
Barattolo
guru delle pelli
guru delle pelli
 
Messaggi: 2529
Iscritto il: mar mar 09, 2004 7:26 pm
Località: :|

Messaggioda Fippo1992 il gio giu 04, 2009 10:37 pm

:o Dio quanto ho ancora da imparare :D Grazie del post barattolo...
Allora, intanto dico che il problema non è il tasto 8, anche perchè per scrivere mio nome, cognome e numero di telefono non premo mai il tasto 8... non lo so... invece che scrivere filippo mi scrive rfili8po...
Quello che non funziona non è nemmeno il passaggio della lettera dalla funzione all'altra... ho controllato... i passaggi sono giusti... ma quando arriva a salvare mi va tutto a donnine di facili costumi.

Ora... domattina vi metto il codice... lo uploaderò da qualche parte per non intasare la cosa...
Sabato vedrò di capirci qualcosa anche con la prof... semmai ricomincio da zero... Un po' mi dispiace perchè mi stava venedno veramente una cosa carina e mi piaceva molto... Però i timer non so come usarli :x
Affiliato con l'antagonista di discussione marcods86 ~ ALLEANZA BATTERISTI SFIGATI IN AMORE ~ Membro della "Rumorosissima Alleanza Batteristi Bonzoniani"
Immagine
Avatar utente
Fippo1992
ho il ritmo nel sangue
ho il ritmo nel sangue
 
Messaggi: 774
Iscritto il: sab ago 09, 2008 10:48 am
Località: San Romano, Montopoli in V/A, Pisa

Messaggioda The Maus il ven giu 05, 2009 9:56 am

:D Senti maaa... salvare... spiegare meglio.... un conto è l'output su schermo, ma poi salvi tutto quello che digiti in una (o più) variabile vero?
My Drum Kit! * Member of: Sacra Alleanza Batteristi Rolandiani * Alleanza dei batteristi pelatoni * alleanza dei videogiocatori * Dirty old drummers alliance * Yamaha Elegance Club * Santa Alleanza degli Allievi o Ex Allievi di G.Gandino * Associazione Batteristi Centauri
Avatar utente
The Maus
Buddy Rich
Buddy Rich
 
Messaggi: 4188
Iscritto il: gio feb 15, 2007 11:28 am
Località: Torino

Messaggioda Fippo1992 il ven giu 05, 2009 11:16 am

No, il salvataggio lascialo fare, non è un problema...
Spiego: per salvataggio intendo un vero e proprio salvataggio su hard disk attraverso due funzioni che la prof ci ha scritto (ha detto che è programmazione a oggetti, che dovremmo fare a partire dal prossimo anno), noi le abbiamo semplicemente ricopiate. Quel punto lascialo perdere, l'ho scritto come "presentazione" del programma a voialtri :D

Comunque si, salvo tutto su variabile... quel Rubrica[nNomi].Nome si rifà a questo:

Codice: Seleziona tutto

struct Elem
{
      char Nome[20];
      char Cognome[20];
      char Telefono[20];
};

Elem Rubrica [100];



http://www.2shared.com/file/6118859/710 ... brica.html

Ecco il link al download del codice...
Affiliato con l'antagonista di discussione marcods86 ~ ALLEANZA BATTERISTI SFIGATI IN AMORE ~ Membro della "Rumorosissima Alleanza Batteristi Bonzoniani"
Immagine
Avatar utente
Fippo1992
ho il ritmo nel sangue
ho il ritmo nel sangue
 
Messaggi: 774
Iscritto il: sab ago 09, 2008 10:48 am
Località: San Romano, Montopoli in V/A, Pisa

Messaggioda The Maus il ven giu 05, 2009 1:15 pm

:o Non me lo scarica...
My Drum Kit! * Member of: Sacra Alleanza Batteristi Rolandiani * Alleanza dei batteristi pelatoni * alleanza dei videogiocatori * Dirty old drummers alliance * Yamaha Elegance Club * Santa Alleanza degli Allievi o Ex Allievi di G.Gandino * Associazione Batteristi Centauri
Avatar utente
The Maus
Buddy Rich
Buddy Rich
 
Messaggi: 4188
Iscritto il: gio feb 15, 2007 11:28 am
Località: Torino

Messaggioda Barattolo il ven giu 05, 2009 9:04 pm

a me lo scarica, ma su ubuntu non riesco a compilarlo... in effetti e' un po' lunghetto, adesso sono troppo stanco per mettermi a cercare errori a occhio :D
"An artist is someone who produces things that people don't need to have but that he - for some reason - thinks it would be a good idea to give them."
"Humans have a marked appreciation for beauty and aesthetics which, combined with the human desire for self-expression, has led to cultural innovations such as art, literature and music."
Confuso possessore di "un pedale del tamburo basso del doppio del cobra del ferro di Tama"
Avatar utente
Barattolo
guru delle pelli
guru delle pelli
 
Messaggi: 2529
Iscritto il: mar mar 09, 2004 7:26 pm
Località: :|

Messaggioda The Maus il ven giu 05, 2009 9:19 pm

:D Ribadisco il concetto che una bella tastiera QWERTY virtuale ti semplifica la vita enormemente
My Drum Kit! * Member of: Sacra Alleanza Batteristi Rolandiani * Alleanza dei batteristi pelatoni * alleanza dei videogiocatori * Dirty old drummers alliance * Yamaha Elegance Club * Santa Alleanza degli Allievi o Ex Allievi di G.Gandino * Associazione Batteristi Centauri
Avatar utente
The Maus
Buddy Rich
Buddy Rich
 
Messaggi: 4188
Iscritto il: gio feb 15, 2007 11:28 am
Località: Torino

Messaggioda Barattolo il sab giu 06, 2009 1:33 pm

ho dato un'occhiata...

ci sono diverse cose un po' losche... tanti appunti stilistici... tanto per dirne qualcuna:
in NumeroTastierino, se l'if non e' verificato, cosa torna la funzione?
la chiami con un giro un po' intricato di for e if, ti converrebbe fare DENTRO la funzione tutti i controlli di validita' del click (e non controllare se il codice e' > 43 fuori, perche' potrebbe essere anche negativo, o 39 comunque non sarebbe valido, ecc)

per il resto senza farlo girare sono un po' in difficolta'. un po' di cose di poca importanza che mi sono segnato:

1) aaaaahhh!!! variabili globali! non sono un granchè ben viste (diciamo cosi'). oltretutto alcune, tipo YClick, potresti toglierle abbastanza facilmente, tanto le usi solo in 2 funzioni! se vuoi fare una cosa piu' ordinata magari mettile tutte sulla stessa struttura (se hanno senso, ovviamente), ad esempio fare una struttura Rubrica che tiene 100 nomi, il numero di nomi e, uhm, boh, qualcos'altro, e quella farla globale (brutto ma un po' meglio e assomiglia a una classe statica ... quando saprai cos'e'). Magari senza mescolare i nomi della rubrica e la posizione del mouse, intendo dire.
2) quando annidi gli if o i for ... a parte che e' inutile fare if(...) if(...) { } perche' e' a tutti gli effetti come metterli in AND, comunque metti le graffe, tipo for(...) { for(...) { } } funziona ugualmente, ma e' piu' a prova di idiota
3) cerca di pensare a delle "specifiche" della funzione. Scrivi un commento prima di ogni funzione: controlla X, ritorna Y. Non fare funzioni "disoneste" che possono tornarti valori non previsti: ogni funzione controlla al suo interno tutto quello che deve e poi ritorna un valore VALIDO, o alla peggio, un errore o un valore "innocuo".
4) ci sono troppi "numeri magici" in giro, tipo la larghezza di un bottone: se vuoi cambiare la larghezza ti spari :D, e comunque quando ti trovi davanti a un "if x > 325" ti domandi "che caspita e' 325?". ti conviene definirla come costante (con #define) e usare sempre la costante, o qualcosa di simile.
"An artist is someone who produces things that people don't need to have but that he - for some reason - thinks it would be a good idea to give them."
"Humans have a marked appreciation for beauty and aesthetics which, combined with the human desire for self-expression, has led to cultural innovations such as art, literature and music."
Confuso possessore di "un pedale del tamburo basso del doppio del cobra del ferro di Tama"
Avatar utente
Barattolo
guru delle pelli
guru delle pelli
 
Messaggi: 2529
Iscritto il: mar mar 09, 2004 7:26 pm
Località: :|

Messaggioda Fippo1992 il sab giu 06, 2009 2:43 pm

Ragazzi ho consegnato l'eseritazione stamani... che devo dire... Una tragedia :D
Siamo stati due ore con i due professori a cercare 'st'errore... ma nulla... alla fine ho consegnato il codice che vi ho fatto vedere, rigo più rigo meno, e supercommentato... Boh, speriamo bene...

@barattolo:
1) Mea culpa, è uan cosa di cui anche la prof mi fa spesso appunto xD
2) E' vero... Sulle graffe sinceramente mi piaceva di più senza, saranno a prova di idiota ma di star a mettere 200 graffe mi sfava :D Provvederò...
3) :tru Bell'idea
4) non so cosa sia il define, vado a informarmi...!

@The Maus: se ti avessi dato retta tempo fa avrei preso un otto stamani...
Affiliato con l'antagonista di discussione marcods86 ~ ALLEANZA BATTERISTI SFIGATI IN AMORE ~ Membro della "Rumorosissima Alleanza Batteristi Bonzoniani"
Immagine
Avatar utente
Fippo1992
ho il ritmo nel sangue
ho il ritmo nel sangue
 
Messaggi: 774
Iscritto il: sab ago 09, 2008 10:48 am
Località: San Romano, Montopoli in V/A, Pisa


http://www.youtube.com/watch?v=NP5_CJg7oKQ

Torna a Tutto il resto

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti