IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

probleme structure t


Sujet :

C

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 6
    Points : 4
    Points
    4
    Par défaut probleme structure t
    Bon j'ai un probleme avec ces 2 erreurs j'arrive pas à le resoudre voila le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    #include<stdio.h>
    #define M 100
     
    struct vl {
        char Nom_Ville[20];
        float superficie;
        int nbre_habitants;
        int nbre_entreprises;
        int nbre_ecoles;
    };
    typedef struct vl Ville;
    Ville T[M];
    int i,n;
     
    int remplir(Ville T[M]) 
    {
    	do{
    		printf("Veuillez d'abord donner le nombre de ville :  "); 
    		scanf("%d", &n); 
    	} 
    	while(n<=0&&n>M);
        for(i=0; i<n; i++) {
        printf("Donnez le nom de la ville:  "); getchar(); gets(T[i].Nom_Ville);
        printf("Donnez la superficie:  "); scanf("%f", &T[i].superficie);
        printf("Donnez le population:  "); scanf("%d", &T[i].nbre_habitants);
        printf("Donnez le nombre d'entreprises:  "); scanf("%d", &T[i].nbre_entreprises);
        printf("Donnez le nombre d'ecoles:  "); scanf("%d", &T[i].nbre_ecoles);
        printf("\n\n");
        fflush(stdin);
        }
    	return n;
    }
     
    void affiche(Ville T[M]) 
    {
        for(i=0; i<n; i++) {
            printf("Nom: %s. Superficie: %7.2f. Population: %d. Entreprises: %d. Ecoles: %d", T[i].Nom_Ville, T[i].superficie, T[i].nbre_habitants, T[i].nbre_entreprises, T[i].nbre_ecoles);
        }
    }
     
    char petite(Ville T[M]) 
    {   
    	int index=0;
        for(i=0; i<n; i++)
    	{
    		if (T[index].nbre_habitants > T[i].nbre_habitants) 
    			index=i;
    	}
        return T[index];
    }
     
    char riche(Ville T[M]) 
    { 
    	int index=0;
        for(i=0; i<n; i++) 
    	{
    		if (T[index].nbre_entreprises<T[i].nbre_entreprises) 
    			index=i;
    	}
        return T[index];
    }
     
    main() 
    {
        int choix;
        printf("Bienvenue:\nVeuillez tappez 1- Pour remplir le tableau. 2- Pour l'afficher. 3- Pour afficher la ville la plus riche. 4- Pour afficher la plus petite ville.");
        scanf("%d", &choix);
        switch (choix) 
    	{
            case 1: 
                remplir(T);
             break;
            case 2: 
                affiche(T);
            break;
            case 3:riche(T);affiche(T);
            break;    
            case 4:petite(T);affiche(T);   
            break;
            default : break;
        }
     
    	return 0;
    }
    les erreurs : return : cannot convert from struct vl to char
    si quelque à une solution svp.

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    char petite(Ville T[M]) 
    {   
    ....
        return T[index];
    }
     
    char riche(Ville T[M]) 
    { 
    .....
        return T[index];
    }
    Les fonctions retournent T[index] qui est une ville alors que la déclaration dit que c'est un char. Il n'est pas possible de convertir une structure en char (et ça n'aurait aucun sens).
    Soit tu décides de retourner l'indice, et tu modifies le return en return index
    soit tu retournes la structure et tu modifies la déclaration en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Ville petite(Ville T[]) ...
    Ville riche(Ville T[]) ...
    et tu modifies les appels en conséquence (pour récupérer la valeur de retour).
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  3. #3
    Candidat au Club
    Inscrit en
    Décembre 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    j'arrive pas à savoir ou modifier les appels (pour récupérer la valeur de retour).
    Si quelqu'un à une solution svp .

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2009
    Messages : 90
    Points : 157
    Points
    157
    Par défaut
    il faut que tu mettes

    Ville petite(Ville T[])
    Ville riche(Ville T[])

    à la place de

    char petite(Ville T[]) ...
    char riche(Ville T[]) .

  5. #5
    Candidat au Club
    Inscrit en
    Décembre 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Oui deja fait mais apres l'exucution la fonction petite et riche ne retourne rien ><

  6. #6
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 076
    Points : 2 328
    Points
    2 328
    Par défaut
    normal :

    tu dit que Riche retourne une ville.
    Mais si tu retourne quelque chose, il faut le stocker.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            case 3:riche(T);affiche(T);
            break;    
            case 4:petite(T);affiche(T);   
            break;
    De plus, le code est incoherent.

    affiche() n'affiche pas UNE ville particuliere, mais toutes les ville.

    Il faudrait faire quelque chose de ce style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
          Ville temp;
          switch()
          {
              case 3:
                   temp = riche(T);
                   afficheUneVille(temp);
                   break;
    On peut abreger le code comme ceci aussi :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
          switch()
          {
              case 3:
                   afficheUneVille(riche(T));
                   break;
    A toi de coder la fonctionAfficheUneVille(Ville LavilleAafficher)


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme structure et liste
    Par xillion dans le forum C
    Réponses: 6
    Dernier message: 26/03/2008, 20h45
  2. probleme structure case
    Par monsieur77 dans le forum Linux
    Réponses: 4
    Dernier message: 07/11/2007, 12h14
  3. Probleme structure / realloc
    Par bobgeldof7 dans le forum C
    Réponses: 4
    Dernier message: 30/11/2006, 21h33
  4. probleme structure en parametre
    Par ciberju dans le forum C
    Réponses: 2
    Dernier message: 21/08/2006, 03h26
  5. Réponses: 3
    Dernier message: 02/03/2006, 11h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo