Le plus grand ecart!

Fermé
rymane99 Messages postés 6 Date d'inscription mercredi 25 février 2015 Statut Membre Dernière intervention 6 mars 2015 - 26 févr. 2015 à 18:41
 rymane99 - 27 févr. 2015 à 20:41
slt tout le monde! les amis j'ai vraiment besoin de votre aide pour resoudre deux exos d'algorithme voila le premier: on considre un tableau d'entiers positifs Vect de taille n. ecrire un algo ou un programme C qui detremine le plus grand ecart entre deux éléments consécutifs
le deuxiéme: on considere un tableau d'entiers Vect de taille n.une tranche d'un tableau est une sequence d'éléments consécutifs de celui ci. Une tranche d'ordre k est une séquence contenant entre 1 et k éléments. la valeur d'une tranche est la somme de ses éléments.Ecrire un algo ou programme C qui determine la tranche d'ordre trois de ce tableau ayant la plus petite valeur
Répondez moi pleaaase!!

1 réponse

arthurik Messages postés 166 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 22 juin 2015 14
26 févr. 2015 à 22:08
Salut!

Pour le premier qui est simple:

ex1(tab:tableau, n:entier) -> ecart :entier
i, temp : entier;
ecart <-- 0;
i <-- 0;

tant que i < n-1
temp = abs(tab[i]-tab[i+1]);
if(temp > ecart)
ecart = temp;
endif
fin tant que
fin ex1

Pour le deuxième je donne une piste mais je trouve que le problème est ambiguë :
Il faut savoir identifier toutes les tranches. C'est à dire dénombrer l'espace de recherche...
Je propose que 1, 2, 3 représentent les tranches ayant comme début la première case du tableau, puis les 3 suivants : ayant comme début la 2eme cases. Tu peux faire deux boucles imbriquées. Bon courage.
0
rymane99 Messages postés 6 Date d'inscription mercredi 25 février 2015 Statut Membre Dernière intervention 6 mars 2015
Modifié par rymane99 le 27/02/2015 à 09:46
merçi bcp arthurik vous m'avez sauvé! Exusez moi j'ai une petite question considerant le premier exo: que signifie temp et abs ( je sais que c'est bete mais svp repodez moi!) et voila quelque notes sur le 2eme exo: une tranche d'ordre 3 est une séquence d'éléments consécutifs ayant au moins 3 éléments.Eexemple:soit Vect=(-20,8,-11,10,-9,-15,8,13,-7,4) un tableau de 10 entiers
la tranche(-9,-15) est celle ayant la plus petite valeur((-9)+(-15)=-24) parmi les tranches d'ordre 3.
la tranche(-20,8,-11) est une tranche d'ordre 3. sa valeur est (-20+8-11)>-24
j'espere que c'est plus clair mnt!! vous pouvez me resoudre ça svp?? c"est premiere année en informatique et je suis out !!
0
arthurik Messages postés 166 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 22 juin 2015 14 > rymane99 Messages postés 6 Date d'inscription mercredi 25 février 2015 Statut Membre Dernière intervention 6 mars 2015
27 févr. 2015 à 19:55
Tu aurais compris que c'est langage algorithmique.
Désolé c'est vrai que j'aurais du plus insister sur les choses. Temp c'est une variable temporaire pour stocker le calcul, abs c'est une fonction qui renvoie la valeur absolue.
Dis moi si tu arrive à écrire ça en C++.

Pour exo 2 tu est sur que c'est "au moins 3 éléments " ce qui m'étonnerais...

A+
0
rymane99 Messages postés 6 Date d'inscription mercredi 25 février 2015 Statut Membre Dernière intervention 6 mars 2015 > arthurik Messages postés 166 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 22 juin 2015
27 févr. 2015 à 20:01
mrççç bcp...bah je l'ai pas encore ecris en language c et pour le 2eme exo c'est AU PLUS 3 éléments alors?..
merçi d'avance
0
arthurik Messages postés 166 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 22 juin 2015 14
27 févr. 2015 à 20:22
J'ai fait ça rapidement sans tester ni vérifié mais c'est de ce gout la ...


int valeurTranche(int index, int longueurTranche, const vector<int> & tableau);

void ex2(const vector<int>&tab)
{
int valMin = 0, temp;
//index de la tranche donnant la valeur min
int indexTrancheMin = 0;
//taille de la trache ---------------------
int tailleTrancheMin = 0;
for(int i = 0; i < tab.size();i++)
{
//pour toutes les tailles de tranches
for(int j = 1; j <=3 && i+j-1 < tab.size();j++)
{
valMin = valeurTranche(i, j, tab);
if(temp < tailleMin)
{
valMin = temp;
indexTrancheMin = i;
tailleTrancheMin = j;
}
}
}

///////
//le resultat est donné avec indexTrancheMin et tailleTrancheMin
///////
}

int valeurTranche(int index, int longueurTranche, const vector<int> & tableau)
{
int somme = 0;
for(int i = 0; i < longueurTranche;i++)
{
somme+=vector[index+i];
}
return somme;
}


Ne te décourage pas, l'algorithmie est parfois dure
0
arthurik Messages postés 166 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 22 juin 2015 14
27 févr. 2015 à 20:33
Un rapport d'algorithmique est à mon avis axé sur l'analyse de la complexité des algo en temps et en espace, mais je pense que c'est un peu dur pour la premiere années. D'ailleur souvent ça porte aussi sur la preuve des algo.

Je pense que pour toi ça doit être l'explication des algos, déroulement de l'algo sur un exemple, parler un petit peu de la performance de ces derniers, estimer la complexités... et avec tout ça un peu de pipeau :) :p ...
0