Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3077 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Aide Réalisation d'un programme

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aide Réalisation d'un programme

n°2177709
akonoly
Posté le 27-02-2013 à 10:33:29  profilanswer
 

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.[cpp][/cpp]

mood
Publicité
Posté le 27-02-2013 à 10:33:29  profilanswer
 

n°2177710
Terminapor
I'll see you rise.
Posté le 27-02-2013 à 10:42:28  profilanswer
 

Ben déjà, tes fonctions somme / moyenne ne prennent qu'un argument, or tu les appelles avec deux arguments.
 
Faut que tu rajoutes cet argument :  
 

Code :
  1. int somme(int * T,int nb_case)


 
Simplement, il te dira combien de cases ton tableau a (donc tu t'en sers si tu parcours ton tableau).
 
Pour ce qui est du troisième choix, tu dois parcourir ton tableau pour retrouver la valeur la plus petite, et aussi le n° de la case qui lui correspond.
 
Et dernier truc, le main est signé sur un int, pas un void (même si le compilo tolère ça) :D


---------------
Perhaps you don't deserve to breathe
n°2177902
Sve@r
Posté le 28-02-2013 à 08:17:38  profilanswer
 

Salut
Quand on utilise un tableau d'éléments, il peut être intéressant (si c'est possible) d'ajouter un élément "à part" indiquant la fin du tableau. Ca t'évite alors d'avoir à passer la taille du tableau aux fonctions destinées à le manipuler.
 
Exemple: tu veux afficher ton tableau
Méthode 1: on passe la taille du tableau (ce que tu fais)

Code :
  1. void affiche(int *t, int nb)
  2. {
  3.    int i;
  4.    for (i=0; i < 8; i++) printf("%d\n", t[i]);
  5. }
  6.  
  7. int main()  
  8. {  
  9.    int t[]={12,26,35,98,23,57,61,25};
  10.    affiche(t, 8);
  11. }


 
Méthode 2: on utilise une valeur "sentinelle"

Code :
  1. void affiche(int *t)
  2. {
  3.    int *p;
  4.    for (p=t; *p != -1; p++) printf("%d\n", *p);
  5. }
  6.  
  7. int main()  
  8. {  
  9.    int t[]={12,26,35,98,23,57,61,25, -1};
  10.    affiche(t);
  11. }


 
L'avantage de cette seconde méthode c'est que si le tableau change de taille, tu n'as qu'une seule modif à faire. L'inconvénient c'est qu'il faut avoir à disposition une valeur n'ayant aucune signification réelle pour ton algo. Ici c'est possible car il s'agit de notes réelles donc on peut utiliser -1 (note impossible) mais parfois on n'a pas de possibilité...
 

akonoly a écrit :

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


Tu crées 2 variables: une position et une valeur
Tu mets la position à 0 et la valeur à t[0]
Tu boucles sur ton tableau en partant de 1 (ce détail n'est pas obligatoire mais ça optimise)
A chaque itération, si l'élément [i] est plus petit que la valeur alors
    tu copies l'élément[i] dans la valeur
    tu copies i dans la position
A la fin de la boucle, tu affiches la valeur et la position...


Message édité par Sve@r le 28-02-2013 à 08:25:58

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Aide Réalisation d'un programme

 

Sujets relatifs
Besoin d'aide Script PHP/SQLPetite aide dreamweaver et ces calques
Choix d'un langage pour un programme précisBesoin d'aide pour faire un batch de téléchargement
[C] Petit programmeaide pour programme sous codeblocks
Problème programme Caide code
[java] Ligne qui bloque tout mon programmeBesoin de votre aide pour la réalisation d'un programme
Plus de sujets relatifs à : Aide Réalisation d'un programme


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR