[prog-it] Re: holaz :)

  • From: "Seeman79" <Seeman79@xxxxxxxxx>
  • To: <prog-it@xxxxxxxxxxxxx>
  • Date: Mon, 13 May 2002 02:15:58 +0100


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!.




Other related posts: