Aidez votre ami avec un devoir en C

Résolu
jeanjean13 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
mamiemando Messages postés 33774 Date d'inscription   Statut Modérateur Dernière intervention   -
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 33774 Date d'inscription   Statut Modérateur Dernière intervention   7 883
 
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   Statut Membre Dernière intervention  
 
Merci mon pote, je ferai de mon mieux pour le terminer ce soir. merci.
Jean
0
mamiemando Messages postés 33774 Date d'inscription   Statut Modérateur Dernière intervention   7 883
 
ma potesse même... :/
0