Ciao stavo provando a svolgere un piccolo esercizio puramente didattico volevo ordinare dei dati registrati in un'array di struct
il fatto è che esegue i primi 2 spostamenti poi stampa.. righe senza contenuti
il fatto è che esegue i primi 2 spostamenti poi stampa.. righe senza contenuti
C:
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "Intestazione.h"
#pragma warning(disable : 4996)
#define MAX_CLASSES 22
#define n 22
struct Persona
{
int id;
char nome[20];
char cognome[20];
};
typedef struct Persona persona;
static persona p1[22];
void stampa()
{
int i;
for (i = 0;i < n;i++)
{
printf("\n%d %s %s", p1[i].id, &p1[i].nome, &p1[i].cognome);
}
}
void minvalind(persona a[], int N, int* minarray, int* imin);
static void scambiare(persona* c1, persona* c2);
void selectmin()
{
int i, minarray, imin;
for (i = 0;i < n-1;i++)
{
minvalind(&p1[i], n- i, &minarray, &imin);
//printf("\nmin:%d imin:%d", minarray, imin);
scambiare(&p1[i], &p1[imin +i]);
}
}
main()
{
char buf[100],*res;
FILE *fd;
fd=fopen("dati.txt", "r");
if (fd != NULL)
{
printf( "file aperto\n");
}
int x=0;
while (!feof(fd))
{
fscanf(fd, "%d %s %s", &p1[x].id, &p1[x].nome, &p1[x].cognome);
x++;
}
stampa();
selectmin();
stampa();
}
void minvalind( persona a[], int N, int* minarray, int* imin)
{
int i;
*imin = 0;
*minarray = a[0].id;
for (i = 1;i < n;i++)
{
if (p1[i].id < *minarray)
{
*minarray = a[i].id;
*imin = i;
}
}
}
static void scambiare(persona* c1, persona* c2)
{
persona t = *c1;
*c1 = *c2;
*c2 = t;
}
C:
101 GIOVANNI SCARPATO
100 GIANFRANCO CONTINIELLO
20 ROBERTA CONTINIELLO
19 ANNA GALLO
18 PATRIZIA LAFEROLA
17 ANTONIO FORMISANO
16 UMBERTO SAVARESE
15 LEOPOLDO ACAMPORA
14 ANTONIO MAROTTA
13 CARMINE RUOCCO
12 CARLO BRUCO
11 CLAUDIO CONTE
10 RENATO APRILE
9 SILVIA DINAPOLI
8 ANGELA CURTIS
7 RODOLFO GALEOTAFIORE
6 ROBERTO DORATO
5 ALFONSO LIGUORI
4 LUIGI ALBERO
3 MICHELE AMABILE
2 NICOLA AMATO
1 ALBERTO RUSSO
Ultima modifica: