Un petite probeme dans prog C

hassen -  
jobertomeu Messages postés 1189 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'ai un petit proplem dans l'exo suivant
ecrire la fonction qui determine le plus long plateau d'un tableau et affiche la séquence ansi la longueur et son debut indice
v=12 5 V5 -1 2 3 3 3 3 42 5 5 5
le plus long plateau est la sequence 3 3 3 3 ,son indice de debut =6 et sa longueur 4
merci,


A voir également:

4 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,

Perso, je n'ai pas compris l'énoncé. Mais peu importe, ce qui nous intéresse est ce que tu as commencé à faire, ce que tu as compris et là où tu bloques.
N'hésite pas à poster le code que tu as commencé à faire.
Cdlt,
0
hassen
 
je suis bloqué j'ai n'ai trouver la solution!!
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Si tu veux qu'on te débloque, il faut nous dire ce que tu as commencé à faire et où tu bloques précisément...
0
jobertomeu Messages postés 1189 Date d'inscription   Statut Membre Dernière intervention   86
 
Salut, d'après ton énoncé quelque peu fouillis, j'en ai réussis à en déduire le style de programme que tu voulais. Celui que j'ai à te présenté a été rapidement codé. De plus, il est très largement optimisable. Ceci dit, voici une premiere ébauche :

#include <stdio.h>

typedef struct s_header {
  int value;
  int nbr;
  int idx;
} t_header;

void checking(int idx, int current, int *prev, int *nbr, t_header *header)
{
  if (current == *prev)
    *nbr += 1;
  else {
    if (*nbr >= header->nbr) {
      header->nbr = *nbr + 1;
      header->value = *prev;
      header->idx = idx - *nbr - 1;
    }
    *nbr = 0;
  }
  *prev = current;
}

int main()
{
  int tab[] = {12, 5, 5, -1, 2, 3, 3, 3, 3, 42, 5, 5, 5};
  int i, prev, nbr = 0, size = 13;
  t_header header;

  header.value = 0;
  header.nbr = 0;
  header.idx = 0;
  prev = tab[0];
  for (i = 1; i < size; i++)
    checking(i, tab[i], &prev, &nbr, &header);
  checking(i, prev + 1, &prev, &nbr, &header);
  printf("Longeur = %d\n", header.nbr);
  printf("Index de debut = %d\n", header.idx + 1);
  printf("Sequence = ");
  for (i = 0; i < header.nbr; i++)
    printf("%d ", header.value);
  printf("\n");
}
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Il ne faut pas pondre les solutions toutes faites... mais plutôt aiguiller ;-))).
0
jobertomeu Messages postés 1189 Date d'inscription   Statut Membre Dernière intervention   86
 
Je suis entièrement d'accord avec toi, mais ce que je lui ai posté n'est pas une solution, il s'agit seulement d'une ébauche de code rapidement codée qui n'est pas destinée à être mise en prod/livrée/rendue.

Cette version est codée de façon basique et se doit d'être bien plus optimisée.
Après, niveau algo, il semblerait que j'ai donné la solution en effet, mais en vue de l'exo demandé, je ne pense pas que l'algo soit le but de l'exo mais plutôt que la partie importante se situe niveau technicité du code et conception du programme.

Mais je ferai plus attention la prochaine fois :)
0