di seguito vi ho riportato lo pseudocodice che in teoria dovrebbe leggere dei numeri da un file di testo, inserirli ognuno in una struct creando cosi una lista linkata che poi tramite le funzioni selection_sort() e swap() dovrebbe ordinare gli elementi in ordine crescente. il programma funziona fino all apertura dei file ma poi non entra nella funzione selection.

#include <stdio.h>
#include <stdlib.h>

struct lista {
    float numeri;
    struct lista *next;
};

//prototipi di funzione

void selection_sort(int array[], int len);

void swap(int array[], int first, int second);

int main(int argc, char argv[]){
    FILE *mfptr = NULL;
    struct lista head;
    struct lista *ptr = &head;
    ptr->next  NULL;

    printf("lettura dei dati\n");

    if((mfptr = fopen("numeri.txt","r")) == NULL) {
    printf("impossibile aprire il file\n");

    }else{

    while(!feof(mfptr)) {
    ptr->next = malloc(sizeof(struct lista);
    ptr = ptr->next;
    fscanf(mfptr, "%f\n", &ptr->numeri);
    ptr->next = NULL;
    printf("%f\n", ptr->numeri);
    }
fclose(mfptr);
}

printf("dati in ordine");

ptr = &head;

    while(ptr->next){
    selection_sort();
    printf("%f\n", ptr->next->numeri);
    ptr = ptr->next;
    }
}

void selection_sort(int array[], int len){
    int piccolo;
    int i, j;

    for(i=0;i<len-1;i++){
    piccolo = i;

    for(j+1;j<len;j++)
    if(array[j] < array[piccolo])
        piccolo = j;

    swap(array, i, piccolo);
    }
}

void swap(int array[], int first, int second){
    int tmp;

    tmp = array[first];
    array[first] = array[second];
    array[second] = tmp;
}

chiesto 12 Jan '16, 15:40

danieleXubu's gravatar image

danieleXubu
14678

modificato 12 Jan '16, 17:22

enzotib's gravatar image

enzotib ♦♦
14.1k113187

1

@danieleXubu: ad una tua precedente domanda su argomento analogo ti ho risposto, ma tu non hai commentato, non hai dato un voto, non hai accettato la risposta, come se non l'avessi proprio letta. Come ti aspetti che mi venga la voglia anche solo di leggere un'altra tua domanda?

(12 Jan '16, 17:23) enzotib ♦♦ enzotib's gravatar image

non pensavo fosse importante, vado subito a votarla, sono nuovo e ancora non ho capito tutto. scusami

(13 Jan '16, 11:18) danieleXubu danieleXubu's gravatar image

@danieleXubu: infatti non hai ancora capito: non hai votato la risposta, né l'hai accettata, mi hai solo dato dei punti prendendoli dai tuoi, che non dovrebbe essere il metodo usuale di premiare un utente.

(13 Jan '16, 15:02) enzotib ♦♦ enzotib's gravatar image

non mi fa votare la risposta perché ho un livello troppo basso per votare a quanto pare. se mi aiuti con il programma te ne sarei grato

(13 Jan '16, 17:20) danieleXubu danieleXubu's gravatar image
Scrivi tu la prima risposta!
abilita/disabilita anteprima

Segui questa domanda

Via email:

Una volta eseguito l'accesso potrai iscriverti a tutti gli aggiornamenti qui

Via RSS:

Risposte

Risposte e commenti

Basi di markdown

  • *corsivo* o __corsivo__
  • **grassetto** o __grassetto__
  • collegamento:[testo](http://url.com/ "titolo")
  • immagine?![alt testo](/path/img.jpg "titolo")
  • elenco numerato: 1. Foo 2. Bar
  • per aggiungere un'interruzione di riga, aggiungi due spazi a fine riga e premi «Invio»
  • è supportato anche semplice HTML

Tag:

×109
×23

domanda posta: 12 Jan '16, 15:40

domanda visualizzata: 1,298 volte

ultimo aggiornamento: 13 Jan '16, 17:20

Chiedi è un servizio di supporto gestito da Ubuntu-it. Contattaci!

powered by OSQAPostgreSQL database
Ubuntu e Canonical sono marchi registrati da Canonical Ltd.