Funzioni struct e puntatori (linguaggio C)

di il
1 risposte

Funzioni struct e puntatori (linguaggio C)

Ciao a tutti, premetto che sono un novellino della programmazione, tra poco ho l'esame e da come mi parla la gente più grande capisco che questo esame e' il più difficile dell'anno quindi almeno una sufficienza stiracchiata voglio prenderla visto che sono una frana. Ci hanno assegnato questo problema: definire la struttura città, che ha un nome e due coordinate.

1) Implementare una funzione che chieda all'utente di inserire una città, ossia un nome e due coordinate (x, y)
2) Implementare una funzione che, preso un array di città, ordini le città per ordine alfabetico
NB: esiste la strcmp per comparare due stringe per ordine alfabetico!
3) Implementare una funzione che, preso un array di città, ordini le città per coordinata x (dalla minore alla maggiore)
a parità di coordinata x, l'ordinamento delle città verrà fatto rispetto alla coordinata y (dalla minore alla maggiore)
4) Implementare una funzione che stampi nome e coordinate di una città.
5) Implementare una funzione che stampi nome e coordinate di tutte le città dentro un array di città

6) implementare un programma che chiede all'utente di inserire N città (definire N con una define) e,
a scelta dell'utente, le stampi in ordine alfabetico oppure di coordinate.
L'unico passaggio che ho provato a fare e' stato quello di dichiarare la struct tramite 3 funzioni (una per la prima coord, una per la seconda, e una per il nome della citta), e mi sono fermato li, visto che il mio codice non funziona (ci saranno sicuramente molti errori di sintasse base), se qualcuno mi puo' aiutare gli saro' sempre debitore!!
Ecco il mio codice(sbagliato):
#include<stdio.h>
#include<string.h>
int a,b;
char nome[20];
typedef struct citta_s{
char nomecitta[20];
int x;
int y;
}citta;
int inseriscicoordinata1(int a){
printf("inserisci la prima coordinata:");
scanf("%d",&a);
return a;}
int inseriscicoordinata2(int b){
printf("inserisci la seconda coordinata:");
scanf("%d",&b);
return b;
}
char inseriscinomecitta(char nome){
printf("inserisci il nome della citta");
scanf("%s", nome);
return nome;
}
int main(int argc,char** argv){
citta e={inseriscinomecitta,inseriscicoordinata1,inseriscicoordinata2};
citta*p_e=&e;
printf("%s %d %d ",p_e->nomecitta,p_e->x,p_e->y );
return 0;
}

1 Risposte

  • Re: Funzioni struct e puntatori (linguaggio C)

    Ci sono molte cose che non vanno!

    Prova a vedere questo codice leggermente modificato.

    Ad ogni modo non comprendo la ragione di creare tre funzioni per l'acquisizione e non una che ritorna direttamente la struttura.
    #include<stdio.h>
    #include<string.h>
    
    
    int a,b;
    char nome[20];
    
    typedef struct citta_s {
        char nomecitta[20];
        int x;
        int y;
    } citta;
    
    int inseriscicoordinata1() {
        printf("inserisci la prima coordinata: ");
        scanf("%d",&a);
        return a;
    }
    
    int inseriscicoordinata2() {
        printf("inserisci la seconda coordinata: ");
        scanf("%d",&b);
        return b;
    }
    
    char * inseriscinomecitta() {
        printf("inserisci il nome della citta: ");
        scanf("%s", nome);
        return nome;
    }
    
    int main(int argc,char** argv) {
        citta e;
        strcpy(e.nomecitta , inseriscinomecitta());
        e.x=inseriscicoordinata1();
        e.y=inseriscicoordinata2();
        citta *p_e = &e;
        printf("%s %d %d ", p_e->nomecitta, p_e->x, p_e->y );
        return 0;
    }
    
    P.s. Formatta il codice con i tag code
Devi accedere o registrarti per scrivere nel forum
1 risposte