Linguaggio C, strutture collegate lineari

di il
22 risposte

22 Risposte - Pagina 2

  • Re: Linguaggio C, strutture collegate lineari

    A occhio penso che tu debba scrivere

    while(fila.nome[0])

    ma ATTENZIONE ... nel tuo codice di creazione della fila manca il record terminatore.
  • Re: Linguaggio C, strutture collegate lineari

    Funziona! Grazie mille!!
  • Re: Linguaggio C, strutture collegate lineari

    Ma il record terminatore l'hai aggiunto ? Altrimenti NON funziona
  • Re: Linguaggio C, strutture collegate lineari

    Sì, era sbagliato e l'ho corretto!
    Persona *nuova_fila()
    {
    	Persona *fila;
    	int n, i, m = 0;
    	printf("Elementi fila?");
    	scanf("%d", &n);
    	n++;
    	printf("n: %d", n);
    	if(n == 0)
    		return fila = NULL;
    	
    	//Allocazione dinamica della fila
    	fila = (Persona*) malloc (n * sizeof(Persona));
    	
    	for(i = 0; i < n-1; i++)
    	{	
    		printf("\nElemento %d della fila.\n", ++m);
    		printf("Nome: "); scanf("%s", fila[i].nome);
    		printf("Cognome: "); scanf("%s", fila[i].cognome);
    	}
    	//printf("\nElemento %d della fila marcatore.\n", i);
    	strcpy(fila[n-1].nome, "");
    	strcpy(fila[n-1].cognome, "");
    
    	/*for(i = 0; i < n; i++)
    	{
    		printf("Nome: %s", fila[i].nome);
    		printf("\n");
    		printf("Cognome: %s", fila[i].cognome);
    		printf("\n");
    	}*/
    	return fila;
    }
    while(fila.nome[0]) entra nel ciclo fintanto che la condizione risulti essere non falsa, e quindi vera.

    fila.nome[0] indica che nome è vuoto quindi perché entra nel ciclo? Funziona, ma mi è venuto il dubbio
  • Re: Linguaggio C, strutture collegate lineari

    No ... non va completamente bene.

    Il testo dice che il record terminatore ci deve comunque essere anche per una fila vuota.
    Quindi se n è 0 devi comunque aggiungere il record terminatore.
  • Re: Linguaggio C, strutture collegate lineari

    Hai ragione.. Modificato.

    Senti:

    Persona* aggiungi(Persona fila[], const Persona p);
    //restituisce un nuovo array ottenuto da fila
    //aggiungendovi p come ultimo elemento della fila;


    Nel main, provando a fare quanto riportato sotto, il compilatore mi da problemi riguardo al fatto che pers sia di tipo const..
    	Persona *add;
    	const Persona pers[1];
    	char name[50], surname[50];
    	
    	printf("Nome:"); scanf("%s", name);
    	printf("Cognome:"); scanf("%s", surname);
    	
    	strcpy(pers[0].nome, name);
    	strcpy(pers[0].cognome, surname);
    	
    	add = aggiungi(fila, pers);
  • Re: Linguaggio C, strutture collegate lineari

    Ma perché complichi sempre il codice?
    
       Persona *add;
       Persona pers;
       printf("Nome:"); scanf("%s", pers.nome);
       printf("Cognome:"); scanf("%s", pers.cognome);
       
       add = aggiungi(fila, pers);            
    
    P.S. Non si può discutere di tutto il tuo programma in questo thread ...
  • Re: Linguaggio C, strutture collegate lineari

    Ahhh ecco!
    Ok, grazie ancora
Devi accedere o registrarti per scrivere nel forum
22 risposte