From: "XXXX" <xxxxwebmaster@xxxxxxxxx> Subject: [prog-it] Re: holaz :) Date: Sun, 12 May 2002 20:34:59 +0200 | [snip] | dignita'???? cos'e' la diognita' ?? :P Nobilta' morale che deriva all'uomo dalla sua natura, dalle sue qualita', e insieme rispetto che egli ha di se' e suscita negli altri in virtu' di tale sua condizione. | wwowowo ora si inizia a ragionare in termini di programmazione |:P smack! |hihihi :P Perche'... il mio intro non ti e' piaciuto? :) || [snip] || Una possibile struttura dati da utilizzare potrebbe essere: || [snip] || Almeno elimini tutta la strage di variabili che hai fatto || tu :) | mi fai un esempio di codice? Beh la dichiarazione dei tipi della struttura dati te l'avevo fatta gia' in C... cos'e' che non ti e' chiaro? ========================BEGIN CODE HERE======================== #include <stdio.h> #include <stdlib.h> #define MAX_LEN 50 #define VOCI 6 typedef enum { Reddito_Imponibile, Oneri_Deducibili, Detrazioni_Imposta, Imposta_Netta, Ritenute_Subite, Imposta_Dovuta } Nome_Voce; typedef float Importo[VOCI]; typedef struct Info { char nome[MAX_LEN]; Importo valore; } Param; typedef struct Info *Options; int main(void) { float temp; Options cliente = NULL; if(!(cliente = (Options)calloc(1, sizeof(Param)))) { perror("calloc"); exit(-1); } printf("\nNome Del Dichiarante: "); scanf("%s", cliente->nome); printf("\n\nInserisci redditi percepiti: "); scanf("%f", &cliente->valore[Reddito_Imponibile]); printf("\nInserisci Redditi case (escluso la prima) e terreni: "); scanf("%f", &temp); cliente->valore[Reddito_Imponibile] += temp; printf("\n\tInserisci Oneri Deducibili: "); scanf("%f",&temp); cliente->valore[Reddito_Imponibile] -= temp; printf("\n\t\tIl reddito imponibile del cliente %s e': %.0f\n\n", cliente->nome, cliente->valore[Reddito_Imponibile]); return 0; } =========================END CODE HERE========================= | perche' in questa versione del programma mi serve principalmente | la stampa sul file se cio' non avvenisse il programma mi e' | inutile :) Resto dell'idea che piuttosto di non averli i risultati, li preferisco a video... | ...questa non l'ho capita che intendi per "logo celebrativo | del programmatore"? cprintf("\n\r* 730 / 2002 *\r"); cprintf("\n\r* Calcolo IR.P.E.F *\r"); cprintf("\n\r* XXXXsoftware(c) *\r"); cprintf("\n\r* Versione 1.00 *\r"); cprintf("\n\r* Premere ctrl+C per terminare il programma *\r"); | allora quando lo compilo con devc++ se non uso l'operatore '&' | non mi compila il codice e quindi sono stato costretto ad usarlo Una funzione come la scanf e' una funzione detta con SIDE-EFFECT perche' accetta parametri in modalita' OUT, ossia li modifica. In C l'unico modo per passare parametri in modalita' OUT e' quello di passarli per riferimento piuttosto che per valore. Per passare un parametro per riferimento bisogna passarne il puntatore (una variabile di tipo puntatore infatti e' una variabile atta a contenere indirizzi). Per le variabili "semplici" che non sono puntatori infatti, devi passare il nome della variabile stessa preceduta dal simbolo '&', ossia devi "deferenziare" la variabile per ottenere la sua esatta locazione di memoria. Una stringa, in C, e' un array di caratteri e, in C, gli array sono identificati con l'indirizzo (puntatore) del loro primo elemento. Essendo un indirizzo, non necessiti dell'operatore '&', infatti, come ti dicevo nella scorsa mail, la scrittura "&*" non ha senso perche' si annullano automaticamente. Spiegazione barbara e veloce ma credo che chiarisca il concetto. | no so gia che le ostanti per le varie aliquote corrispndon | a quel numero che si trova in quel punto di codice visto che | in quel punto calcolo le aliquote :) Cio' non toglie che e' una pessima tecnica di programmazione perche' per listati piu' corposi (deduco che non hai mai lavorato sul kernel di linux e/o scritto moduli runtime per interfacciare hardware in sistemi unix) non ne usciresti vivo. | [spiegazione stile Trap hihihih] ma volevo dire che non m i | serve identificare le costanti inquanto non cambieranno se non | radicalmente anche nel calcolo dell'irpef :) Non e' il mio lavoro, per cui mi fido di te, ma io avevo sentito una cosa diversa :) | razionalita?....esiste? | hihihi :P Voglio autoconvincermi che ne esista ancora un po'... | d) ecc. ecc. |questa mi incuriosisce :) :P Avrei potuto dirti che non controlli se la scanf va a buon fine oppure no, che con la scanf non puoi leggere nomi che contegano spazi (almeno come l'hai scritta tu), che con il codice scritto cosi' c'e' pericolo di buffer overflow, che hai scritto un codice non ANSI C e che quindi non e' portabile e che quindi stai limitando di molto i vantaggi offerti da questo linguaggio, ecc. ecc. Ma non le avevo scritte perche' la mail mi sembrava gia' abbastanza corposa. | [snip] | e ripensandoci bene forse ho scritto una mega puttanta del tipo che | se me leggesse il presidente dell'albo dei consulenti del lavoro me | radierebbe hihih :P | infatti non cabiera' la procedura di calcolo ma ridurranno il Numero | delle aliquote da 5 passeranno a due quandio ci saranno solo due | scaglioni di reddito giusto per semplificare il mio progz :) Ah ecco... allora non avevo sentito male :) | if (redr<=0 ali=0) | if (redr <(alfa+beta) ali=redr-alfa) | else ali=beta | gisto? Direi di no :) Reddito imponibile minore/uguale a zero? || Concludendo il flusso corretto risulta: || Se "redr < alfa" allora "zero" || altrimenti Se "redr < (alfa + beta)" allora "redr - alfa" || altrimenti "beta" |quindi avevo capito sopra :) |giusto? A me non sembra la stessa cosa che hai scritto tu... a te si? :) | azz che attore :) non sapevo che il mio codice sapesse recitare | hihihi :P Non uso mai termini a caso io; il tuo codice recita perche' piu' di un programma e' una farsa ]:P | ci ho provato o meglio la prima versione era con cosi' ma con | getch(); non mi aspettava il return Io pensavo che volessi aspettare la pressione di un tasto qualsiasi; se ti serve aspettare un ENTER allora usa semplicemente getchar(); || [snip] || 8. Il devC++ ti da quei problemi, come ti ho gia' detto, perche' || la [snip] |si me l'avevi detto via sms :) Infatti ti ho scritto "come ti ho gia' detto" :) Solo che non essendo una risposta "aperta" gli altri non potevano saperlo, per cui ho ribadito il concetto. || Per ovviare a cio' potresti utilizzare la codifica ANSI dei colori, || a patto [snip] | oppure lo compilo col borland :P Facere de necessitate virtutem :) Alla prossima. Ciao. -- Cosa ci fanno 20 galli sotto terra? Una GALLERIA!.