fbpx
Skip to main content

LINUX AVANZATO 2007

Di più
18 Anni 6 Mesi fa #46991 da Elia GattaElia Gatta
ESATTO!!! Ogni volta serve una bella dose di esperienza di un argomento... quindi serve una bella dose di preparazione su TUTTO C... per un esame di Linux... MAH!!

Cmq io sono uno di quelli che ieri è passato... ma certo... se lui basa poi il voto dell'esame (o comunque varia la sua predisposizione) in base al tempo che ci metti a programmare... è assurdo... dato che per fare la prova che diceva "creare N cloni, aspettare che ne terminino K e poi uccidere gli altri" non mi pare paragonabile alle altre 3...

PS... a parte i due che non sono passati perchè ha fatto cambiare delle cose all'ultimo... il prof ha fatto cose ben piu assurde: quello di fronte a me, aveva messo una scanf per prendere gli 8 nomi della lista da tastiera, lui è venuto lì e ha detto "no no ma non è che ogni volta posso prendere i nomi da tastiera" e se n'è andato... -_-'

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
18 Anni 6 Mesi fa #46995 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic LINUX AVANZATO 2007
secondo me non era affatto difficile, motivo per cui siamo passati in tanti
il compito piu' difficile forse l'ha dato il 23, per la questione dell'ordinamento...cmq tutto dipende giustamente da persona a persona, in base a quello che sai fare meglio (come avete gia' detto)

nella prova di ieri bastava sapere usare in maniera corretta (niente di eccezionale) i puntatori e le liste per finirlo senza troppi problemi.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
18 Anni 6 Mesi fa #46998 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic LINUX AVANZATO 2007

Cmq io sono uno di quelli che ieri è passato... ma certo... se lui basa poi il voto dell'esame (o comunque varia la sua predisposizione) in base al tempo che ci metti a programmare... è assurdo...


non penso che si segni chi finisce prima nè a quale prova ha partecipato, il voto dovrebbe dipendere solo dall'orale...

vediamo di prepararci bene...

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
18 Anni 6 Mesi fa #47035 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic LINUX AVANZATO 2007

Il calcolatore è tutto tuo e ci fai quello che ti pare.

Io ogni tanto compilavo per controllare la correttezza del programma, per evitare di dover correggere una valanga di errori alla fine.


Grazie, Rizzi ;)

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
18 Anni 6 Mesi fa #47060 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic LINUX AVANZATO 2007
Ho provato a rifare la mia prova di laboratorio nella maniera più compatta e pulita possibile. Spero sia utile a qualcuno.

Se ci sono errori avvisatemi.
#include <stdlib.h>
#include <stdio.h>

//funzione hash ausiliaria
int hash_func(char *stringa1, char *stringa2, int m) {
	int i, val = 0;
           
	for(i = 0; i < 30; i++) {
		if(*(stringa1+i) == '\0')
			break;
		val = val ^ *(stringa1+i);
	}

	for(i = 0; i < 30; i++) {
		if(*(stringa2+i) == '\0')
			break;
		val = val ^ *(stringa2+i);
	}

	val = val % m;
	return val;
}

//struttura anagrafica
typedef struct rec {
	char nome[30];
	char cognome[30];
} record;

//elemento lista
typedef struct ns {
	record rec;
	struct ns *next;
}node;

//funzione per inserimento in testa alla lista
node *list_add(node **p, record new_rec) {
	node *n = (node *)malloc(sizeof(node));
	n->next = *p;
	*p = n;
	n->rec = new_rec;
	return n;
}

int main(int argc, char **argv) {
	
	if(argv[1] == NULL || argc != 2) {
		printf("Numero parametri errato!!\n");
		exit(0);
	}

	int m = atoi(argv[1]);
	
	//allocazione dinamica voluta da bovet ma essenzialmente inutile
	node **hash = (node **)malloc(sizeof(node)*m);
	int i;
	
	if(m >= 8 || m < 1) {
		printf("Il numero inserito come parametro è errato!! Inserire un numero compreso fra 1 e 7\n");
		exit(0);
	}
	
	record anagrafico[8] = { {"mario", "rossi"}, {"paolo", "verdi"}, {"stefano", "bianchi"}, {"fabio", "neri"}, {"daniele", "azzurri"}, {"francesco", "gialli"}, {"franco", "grigi"}, {"fabrizio", "marroni"} };
	
	printf("\nStampa dell'array anagrafico\n\n");
	for(i = 0; i < 8; i++) {
		printf("%d: Nome: %s  Cognome: %s\n", i + 1, anagrafico[i].nome, anagrafico[i].cognome);
	}
	
	//inserimento dell'anagrafe nelle varie liste
	for(i = 0; i < 8; i++) {
		int j = hash_func(anagrafico[i].nome, anagrafico[i].cognome, m);
		list_add(&hash[j], anagrafico[i]);
	}
	
	printf("\n\nStampa delle %d liste di hash[]\n\n", m);
	 
	for(i = 0; i < m; i++) {
		printf("Lista %d\n", i + 1);
		if(hash[i] == NULL)
			printf("Nessun elemento mappato in lista %d!\n", i + 1);
		while(hash[i] != NULL) {
			printf("Nome: %s  Cognome: %s\n", (hash[i]->rec).nome, (hash[i]->rec).cognome);
			hash[i] = hash[i]->next;
		}
		printf("\n");
	}
	
	free(hash);
	
	return 0;
}

Bye!!

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME Autore della discussione
  • Visitatori
  • Visitatori
18 Anni 6 Mesi fa #47081 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic LINUX AVANZATO 2007
Grande Rizzi,mi rincuori,perchè quell'algoritmo (inteso come chiamate a funzioni e puntatori di puntatori) è lo stesso che avevo in mente io quando ho letto il programma...
Se solo avessi passato quel maledetto test di ingresso....GRRRRRRR

Si prega Accedi o Crea un account a partecipare alla conversazione.