Un petite probeme dans prog C

Fermé
hassen - 3 févr. 2015 à 19:49
jobertomeu Messages postés 1189 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 5 février 2015 - 4 févr. 2015 à 23:25
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
3 févr. 2015 à 20:14
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
je suis bloqué j'ai n'ai trouver la solution!!
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
4 févr. 2015 à 17:37
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 dimanche 19 août 2007 Statut Membre Dernière intervention 5 février 2015 86
Modifié par jobertomeu le 4/02/2015 à 22:24
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
4 févr. 2015 à 22:58
Il ne faut pas pondre les solutions toutes faites... mais plutôt aiguiller ;-))).
0
jobertomeu Messages postés 1189 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 5 février 2015 86
4 févr. 2015 à 23:25
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