Aidez votre ami avec un devoir en C

Résolu/Fermé
jeanjean13 Messages postés 5 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 25 septembre 2007 - 1 oct. 2006 à 22:01
mamiemando Messages postés 33363 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 novembre 2024 - 2 oct. 2006 à 20:17
Bonjour les amis, j'ai un petit probleme avec un devoir en C, j'ai fait de mon mieux mais je ne sais pas comment arriver a le faire. La donnee est la suivante:
Écrivez un programme C qui lit un vecteur ou un ajustement de numéros complets positifs de longueur MAX éléments, imprime le mineur, un plus grand élément de l'ajustement et ses positions, ainsi aussi dire si l'ajustement est symétrique, antisimetrique ou majoritaire. Effectuez une fonction pour chaque cas.

Symétrique : c'est un vecteur d'n- éléments où la position i_ésima coïncide avec l'élément qui occupe la position n-i_ésima.
Antisymétrique : c'est un vecteur d'n- éléments où la position i_ésima coïncide avec l'élément qui occupe la position n-i_ésima changé de signe. Majoritaire : c'est un vecteur d'n- éléments où il existe un élément stocké dans le vecteur qui est répété plus de n/2 fois.

Merci pour votre aide, j'espere vous lire bientot.
Att.: JeanJean13

3 réponses

mamiemando Messages postés 33363 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 novembre 2024 7 801
2 oct. 2006 à 00:11
Je te donne le début car te donner la solution n'est pas une bonne méthode pour que tu apprennes. Tu peux partir de ce squelette :
#include <stdlib.h>
#include <stdio.h>

// Affiche le vecteur
int show(int * tab,unsigned int size){
  unsigned int i;
  printf("[ ");
  for(i=0;i<size;++i){
    printf("%d ",tab[i]);
  }
  printf("]");
}

// Cherche le plus petit élément
int min(int * tab,unsigned int size){
  unsigned int i;
  int result = tab[0];
  for(i=0;i<size;++i){
    if (tab[i]<result) result = tab[i];
  }
  return result;
}

// Cherche le plus grand élément
int max(int * tab,unsigned int size){
  // à toi de jouer
}

//....

int main(){
  // Préparer les variables (allocation des tableaux, initialisation...)
  unsigned int taille1 = 5;
  int min_tab1,max_tab1;
  int *tab1=(int *)malloc(taille1*sizeof(int));
  tab[0] = 4;
  tab[1] = 2;
  tab[2] = 0;
  tab[3] = 3;
  tab[4] = -1;


  // Appeler les fonctions de l'exercice
  show(tab1,taille1);
  min_tab1 = min(tab1,taille1);
  max_tab1 = max(tab1,taille1);
  printf("min = %d max = %d\n",min_tab1,max_tab1);
  //...

  // Libérer la mémoire
  free(tab1);
  getchar(); // si tu es sous windows
  return 0;
}

Une fois que tu auras bien compris comment utiliser les boucles for tu verras que c'est facile. Note que dans chaque fonction on est obligé de passer la taille du vecteur en paramètre car le pointeur int* ne permet pas de connaître la taille du vecteur, juste sa position en mémoire.

Bonne chance
0
jeanjean13 Messages postés 5 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 25 septembre 2007
2 oct. 2006 à 19:02
Merci mon pote, je ferai de mon mieux pour le terminer ce soir. merci.
Jean
0
mamiemando Messages postés 33363 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 novembre 2024 7 801
2 oct. 2006 à 20:17
ma potesse même... :/
0