Newsgroup: it.comp.lang.c
Titolo: ops :)

ops, alla fine mi sono dimenticato di allegare .)
ecco qua (col mio newsreader non si puo' fare attach)
#include <stdio.h>
#include <stdlib.h>
 /* ===   RUNTIME DEFINES   === */
#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1 
 /* ===   GLOBAL VARS   === */
unsigned int ROWS = 10, COLUMNS = 10;
unsigned long user_ciuz = 100000;
void *table_address;
 /* ===   GLOBAL STRUCTS   === */
struct table_row {
   unsigned char value;
   struct table_row *next_rowcell;
};
struct table_col {
   struct table_row *head_rowcell;
   struct table_col *next_colcell;
};
 /* ===   FUNCTION'S PROTOTIPS   === */
 /* "*make_row" : compile a list for a row (list of cells)
  * "*make_table" : compile a list for a col (list of rows)
  * "move_quant" : move a quant from a random cell to another random cell
  * "*locate" : return the hw address of the requested list's element address 
  * "start_caos" : start cicle to randomize the quantic distribution */
void *make_row(unsigned int cells_number);
void *make_table(unsigned int lines, unsigned int columns);
void move_quant(void);
void *locate(void *start_pos, unsigned int pos_x, unsigned int pos_y);
void start_caos(unsigned long times);
 /* === CODE === */
int main(int argc, char *argv[])
{
    /* changing or leave current value rows/colums by user's wants */
   switch (argc)
     {
        case 1: break;
        case 4: {
           ROWS = atoi(argv[2]);
           COLUMNS = atoi(argv[3]);
           user_ciuz = atol(argv[4]);
        };
        default: {
          /* Errors and infos on program params */
         puts("Bad usage. The number of arguments must be 0 or 3.\n");
         puts("use: quantistic [x] [y] [num]");
         puts("where:");
         puts("\t-x is the number of rows\n\t-y is the number of columns");
         puts("\t-num is the number of loops");
         puts("\nLeaving 0 arguments, the default values will be used: 10 rows & 10 cols");
         exit(EXIT_FAILURE);
      };
     }
 
    /* preparing list */
   table_address = make_table(ROWS, COLUMNS);
 
    /* start core process */
   start_caos(user_ciuz);
 
   return 0;
}
void *make_table(unsigned lines, unsigned columns)
{
   unsigned count = 0;
   struct table_col *first_colonna, *colonna;
 
    /* alloc right number of rows */
   first_colonna = (struct table_col *)malloc(sizeof(struct table_col));
   colonna = first_colonna;
 
   while (count++ <= lines)
     {
        colonna->head_rowcell = (struct table_row *)make_row(columns);
        colonna->next_colcell = (struct table_col *)malloc(sizeof(struct table_col));
     }
 
   colonna->head_rowcell = (struct table_row *)make_row(columns);
   colonna->next_colcell = NULL;
 
   return (void *)first_colonna;
}
void *make_row(unsigned cells_number)
{
   unsigned count = 0;
   struct table_row *first_riga, *riga;
 
   first_riga = (struct table_row *)malloc(sizeof(struct table_row));
   riga = first_riga;
 
   while (++count <= cells_number)
     {
        riga->value = 6;
        riga->next_rowcell = (struct table_row *)malloc(sizeof(struct table_row));
     }
   riga->next_rowcell = NULL;
 
   return (void *)first_riga;
}
void move_quant(void)
{
    /* temp var for random pos */
   unsigned cell_x, cell_y;
   struct table_row *cell;
 
    /* continued new random choose until the cell isn't void */
   do {
      cell_x = random() % (ROWS+1);
      cell_y = random() % (COLUMNS+1);
 
      cell = (struct table_row *)locate(table_address, cell_x, cell_y);
   } while (cell->value);
   --cell->value;
   cell_x = random() % (ROWS+1);
   cell_y = random() % (COLUMNS+1);
   ++cell->value;
}
void *locate(void *start_pos, unsigned pos_x, unsigned pos_y)
{
   struct table_row *riga;
   struct table_col *colonna;
   unsigned count_x = 1, count_y = 1;
 
   colonna = (struct table_col *)start_pos;
 
    /* jump to requested line */
   for ( ; count_y <= pos_y; count_y++)
     {
        colonna = colonna->next_colcell;
     }
   riga = (colonna->head_rowcell);
   for ( ; count_x <= pos_x; count_x++)
     {
        riga = riga->next_rowcell;
     }
 
   return (void *)riga;
}
void start_caos(unsigned long times)
{
   unsigned long count;
 
   for (count = 0; count <= times; count++)
     { move_quant; }
}

         default: { etc.......
HTH

 argv[4] non esiste. Prova con:
Sono un mona :) grazie mille.
bye

 alla compilazione"; il suo ruolo e' quello di esser presentato alla commissione...
che protrebbe prendere la doppia definizione come un errore.
Auguri

 Auguri
Nessuno di loro ha una conoscenza del linguaggio approfondita al punto tale da poter notare questi dettagli.
Il programma scolastico (del piano sperimentale che ho frequentato) prevede l'insegnamento del TurboPascal (che e' stato davvero, ,ma davvero, ma davvero superficiale) e il C esula per tutta parte dal percorso.
Posso andare tranquillo.
Ciao

alla compilazione"; il suo ruolo e' quello di esser presentato alla commissione...
i commissari:
1) o sanno cosa c'è in stdlib.h e non hanno bisogno che lo scrivi
2) o non sanno neppure cosa è il C e quindi è inutile.
anche io faccio un prog per la tesina (anche se faccio il liceo
scientifico), ma la mia più grossa preoccupazione è di farlo il più
lungo possibile in modo da impressionare i commissari; tanto non lo
capiscono ;-)
Anto
--
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

 capiscono ;-)
Anch'io faccio il Liceo scientifico. Solo che faccio il PNI (Piano Nazionale Informatica): di info non si fa quasi niente (qualcosa di tp e basta). Fare le cose lunghe non serve. Oltre le 10 pagine si annoiano e basta (il mio e' di dodici). L'importante sono le soluzioni usate. io per esempio sto preparando una libreria per gestione di numeri via stringa maggiori di 2^32.
ciao

Anch'io faccio il Liceo scientifico. Solo che faccio il PNI 
anche io PNI, solo che ci "insegnano" il Pascal. Nella pratica, poi,
sono io a spiegarlo ai prof...


 sono io a spiegarlo ai prof...
Idem eadem idem.
Non ho fatto altro che collezionare 10 e lode a tutti i temi senza aver mai toccato un esercizio.
livello raso-terra. Masimo rappresentazione di grafici...
ciao

livello raso-terra. Masimo rappresentazione di grafici...
beato te, a me non mi hanno *mai* dato un voto di informatica...
cmq direi che siamo un po' troppo OT, quindi è meglio chiudere qui.
Ciao Anto
