Forum Programmation.c Aide Ralisation d'un programe

Posté par  . Licence CC By‑SA.
Étiquettes :
-5
26
fév.
2013

Bonjour,

Je souhaiterais avoir de l'aide pour la résolution du problème ci-dessous.

A partir d'un tableau donné:
12,26,35,98,23,57,61,25.
il est demandé de réaliser une application qui va afficher un menu avec comme choix:
1- Affichage de la moyenne;
2-Affichage de la somme;
3- Affichage du plus petit nombre et de sa position;
4-Quitter.

Pour cela, j'ai réalisé ce qui suit:

#include "stdio.h"
float moyenne( int *t, );
int somme(int *t );
void main()
{  
int i;
int t[8]={12,26,35,98,23,57,61,25};        
printf("\n1. Affichage de la moyenne");  
printf("\n2. Affichage de la somme");
printf("\n3. Affichage du plus petit nombre et sa position");
printf("\n4. Quitter");
printf("\n");

scanf("%d",&i);
switch(i)
    {
    case 1 : {printf("\nMoyenne = %3.3f",moyenne(t,8)); break;}
    case 2 : {printf("\nSomme = %d",somme(t,8)); break;}
    case 3 : { exit(1); break;}
    default:;
    }
getch(); 
exit(1);         
}

int somme(int *t)
      {
      int i;
      int s=0;
      for(i=0;i<8;i++) s+=t[i];
      return(s);        
      }

float moyenne(int *t)
      {  return((float)somme(t,8)/8; } 

Ce code ne fonctionne pas. En plus, je n'arrive pas à formaliser le troisième choix.

Je compte sur votre aide.

  • # relire, analyser et simplifier la question.

    Posté par  . Évalué à 9. Dernière modification le 26 février 2013 à 20:24.

    1 et 2 :
    tu definis des fonctions qui prennent un INT en entrée
    et tu leur donne un tableau (t) et un nombre d'element (8)

    3) tu as un tableau avec des elements,
    on te demande de trouver l'element le plus petit du tableau
    on te demande aussi d'indiquer sa position.

    PS : relire ton cours peut aussi t'aider

  • # Apprendre à écrire correctement ça aide

    Posté par  (site web personnel) . Évalué à 5.

    ça pique les yeux tes fautes dans le titre.

    Système - Réseau - Sécurité Open Source

  • # Il faut vraiment...

    Posté par  . Évalué à 6.

    Que tu te documentes sur les fonctions en C.

    En particulier comment se comporte l'entête.

    Bon courage, ca vient vite.

  • # Détail

    Posté par  . Évalué à 7.

    Ce code ne fonctionne pas

    Nan nan, ce code de compile pas.
    J'ai comme dans l'idée que les erreurs affichées lors de la compilation te seraient utiles :-)

  • # queles trucs

    Posté par  . Évalué à 3.

    ben déjà, des trucs comme ca :

    somme(t,8)

    alors que

    int somme(int *t );

    et

    int somme(int *t)
    { …

    D'un coté tu passe 2 parametres, alors que ta fonction n'en attends qu'un seul…

    Ensuite, pour le 3), ben il est demandé "3- Affichage du plus petit nombre et de sa position;" donc il faut "retourner" deux données… vu que return n'en retourne qu'un seul, il doit y avoir un autre moyen…

    enfin, ca ne gene pas la compil, mais je ne comprends pas les parenthese sur le return…

    return(s);

  • # Salut

    Posté par  . Évalué à -2.

    #include <stdio.h>
    #include <stdlib.h>
    #include <curses.h>
    
    float moyenne(int *t,size_t );
    int somme(int *t,size_t);
    int min(int*,size_t);
    
    void main()
    {
        int i;
        size_t len = 9 ;
        int t[9] = { 12, 26, 35, 98, 23, 57, 61,2, 25 };
        printf("\n1. Affichage de la moyenne");
        printf("\n2. Affichage de la somme");
        printf("\n3. Affichage du plus petit nombre et sa position");
        printf("\n4. Quitter");
        printf("\n");
    
        scanf("%d", &i);
        switch (i) {
        case 1:
            {
                printf("\nMoyenne = %3.3f\n", moyenne(t, len));
                break;
            }
        case 2:
            {
                printf("\nSomme = %d\n", somme(t, len));
                break;
            }
        case 3:
            {
                printf("\nMin = %d\n", min(t,len) );
                break;
            }
        default:;
        }
        getch();
        exit(1);
    }
    
    int somme(int *t, size_t len)
    {
        int i;
        int s = 0;
        for (i = 0; i < len; i++)
            s += t[i];
        return (s);
    }
    
    float moyenne(int *t, size_t len)
    {
        return somme(t, len) / (float)len;
    }
    
    int min(int *t, size_t len ) 
    {
        int i;
        int mini = t[0];
        for (i = 1; i < len; i++)  if (mini> t[i]) mini = t[i] ;
        return mini;
    }
    
    

    plus haut la correction…
    Malheureusement ce code ne devrait compiler que sous linux avec la commande :

    cc -lcurses prog.c
    
    

    ou alors vire l'appel à curses.h dans les en-têtes pour compiler ce code sous windows.

    Bon tout est à peu près standard si ce n'est l'utilisation de la librairie curses, mais getch n'est pas existant dans la librairie standard ce qui fait que de base ton code n'est pas portable. Je te conseille d'offrir à ton professeur un livre de C ANSI et de lui dire que ce qu'il enseigne n'est pas du C standard.

    Systemd, the bright side of linux, toward a better user experience and on the road to massive adoption of linux for the desktop.

    • [^] # Re: Salut

      Posté par  . Évalué à 9.

      C'est gentil de lui faire ses devoirs.

      • [^] # Re: Salut

        Posté par  . Évalué à 1.

        oui il avait déjà fait la moitié mais je suis gentil comme type en général.

        Systemd, the bright side of linux, toward a better user experience and on the road to massive adoption of linux for the desktop.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.