Exercice trés difficile sur les tableaux
Fermé
kafouri
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
CHIHAB Yassine -
CHIHAB Yassine -
Bonjour à tous
voici un exercice d'algorithmique qui traite les tableaux:
Soit T un tableau d'entiers de taille N. Une série dans T est une suite d'éléments consécutifs et égaux de T. le problème consiste à trouver la plus longue série dans T, l'indice de son premier élément et sa longueur
Par exemple
T: 2 2 6 6 6 6 9 9 9 9 9 1 0 0 0
le programme affichera la série est 9 elle commence à l'indice 7 et elle est de longueur 5
Merci énormément
voici un exercice d'algorithmique qui traite les tableaux:
Soit T un tableau d'entiers de taille N. Une série dans T est une suite d'éléments consécutifs et égaux de T. le problème consiste à trouver la plus longue série dans T, l'indice de son premier élément et sa longueur
Par exemple
T: 2 2 6 6 6 6 9 9 9 9 9 1 0 0 0
le programme affichera la série est 9 elle commence à l'indice 7 et elle est de longueur 5
Merci énormément
A voir également:
- Exercice tableau croisé dynamique
- Tableau croisé dynamique - Guide
- Exemple tableau croisé dynamique télécharger - Télécharger - Tableur
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
3 réponses
VOICI MA RÉPONSE AU LANGUAGE C: si vous avez une qst n'hésiter pas :)
#include <stdio.h>
#include <stdlib.h>
//another example: 11 444 2 7777 3 666
void longsequence(int T[],int n)
{
int indice=0,longueur=0,longueurTMP=1,i=0;//dans l exercice ils considère que l'indice(0)=1 ici indice0 = 0
for(i=0;i<n;i++)
{
if (T[i]==T[i+1]) /*=>*/ longueurTMP=longueurTMP+1;
else
{
if (longueur<longueurTMP)
{
longueur = longueurTMP;
indice=i-longueur+1;//i-(longueur-1) car longueur(0) = 1
}
longueurTMP=1;
}
}
printf("longeur = %d; indice = %d ",longueur,indice);
}
int main()
{
int T[15]={0},i=0,n=0; //15= max array size
/* array = ? */
printf("Please enter the array's size(max=15)");
scanf("%d",&n);
printf("Please set the array's value: \n");
for(i=0;i<n;i++)
{
printf("T[%d]= ",i);
scanf("%d",&T[i]);
}
longsequence(T,n);
return 0;
system("PAUSE");
}
//FEDERAL WAS HERE
//FROM MOROCCO
// ENJOY!
#include <stdio.h>
#include <stdlib.h>
//another example: 11 444 2 7777 3 666
void longsequence(int T[],int n)
{
int indice=0,longueur=0,longueurTMP=1,i=0;//dans l exercice ils considère que l'indice(0)=1 ici indice0 = 0
for(i=0;i<n;i++)
{
if (T[i]==T[i+1]) /*=>*/ longueurTMP=longueurTMP+1;
else
{
if (longueur<longueurTMP)
{
longueur = longueurTMP;
indice=i-longueur+1;//i-(longueur-1) car longueur(0) = 1
}
longueurTMP=1;
}
}
printf("longeur = %d; indice = %d ",longueur,indice);
}
int main()
{
int T[15]={0},i=0,n=0; //15= max array size
/* array = ? */
printf("Please enter the array's size(max=15)");
scanf("%d",&n);
printf("Please set the array's value: \n");
for(i=0;i<n;i++)
{
printf("T[%d]= ",i);
scanf("%d",&T[i]);
}
longsequence(T,n);
return 0;
system("PAUSE");
}
//FEDERAL WAS HERE
//FROM MOROCCO
// ENJOY!
Bonjour,
1°) Tu dit pas quel language pour "TON programme"
2°) Esssaye d'abord de résoudre le problème et ENSUITE, nous pourront peut-être t'aider à le mettre au point.
3°) CCM n'est pas un forum pour FAIRE les devoirs des étudiants.
A+
1°) Tu dit pas quel language pour "TON programme"
2°) Esssaye d'abord de résoudre le problème et ENSUITE, nous pourront peut-être t'aider à le mettre au point.
3°) CCM n'est pas un forum pour FAIRE les devoirs des étudiants.
A+
Bonjour
voici ma proposition (écrite en langage Pascal)
uses wincrt;
type
tab=array[1..100] of integer;
var
m,v,t:tab;
j,i, p, nbmax,posi,nb,n:integer;
begin
write('siaisr N= ');
readln(n);
for i:=1 to n do
begin
write('T[',i,']=');
readln(t[i]);
end;
i:=1;
nb:=1;
repeat
nb:=nb+1;
i:=i+1;
until (t[i]<>t[i+1]);
j:=i+1;
nbmax:=1;
posi:=1;
repeat
if t[j]=t[j+1] then
begin
nbmax:=nbmax+1;
j:=j+1;
end;
p:=j;
until (t[j]<>t[j+1]) or (j>=n-1);
if nb>nbmax then
begin
nbmax:=nb;
p:=i;
posi:=1;
end
else
posi:=i+1;
writeln('la serie est: ',t[p], ' l''indice ',posi, ' la longueur est: ',nbmax);
end.
ce programme tourne correctement, mais il affiche dans tous les cas la série d'indice 2
Pouvez vous m'aider ?
voici ma proposition (écrite en langage Pascal)
uses wincrt;
type
tab=array[1..100] of integer;
var
m,v,t:tab;
j,i, p, nbmax,posi,nb,n:integer;
begin
write('siaisr N= ');
readln(n);
for i:=1 to n do
begin
write('T[',i,']=');
readln(t[i]);
end;
i:=1;
nb:=1;
repeat
nb:=nb+1;
i:=i+1;
until (t[i]<>t[i+1]);
j:=i+1;
nbmax:=1;
posi:=1;
repeat
if t[j]=t[j+1] then
begin
nbmax:=nbmax+1;
j:=j+1;
end;
p:=j;
until (t[j]<>t[j+1]) or (j>=n-1);
if nb>nbmax then
begin
nbmax:=nb;
p:=i;
posi:=1;
end
else
posi:=i+1;
writeln('la serie est: ',t[p], ' l''indice ',posi, ' la longueur est: ',nbmax);
end.
ce programme tourne correctement, mais il affiche dans tous les cas la série d'indice 2
Pouvez vous m'aider ?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int t[100],i,n,m,s[100],in[100],l[100],j;
printf("donner la dimension \n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("\n t[%d]= ",i+1);
scanf("%d",&t[i]);
}
for(i=0;i<n;i++)
{
printf("t[%d]= %d\t",i+1,t[i]);
}
s[0]=t[0];l[0]=0;in[0]=0;j=0;
for(i=0;i<n;i++)
{
if(t[i]==s[j]) l[j]=l[j]+1;
else {j++;in[j]=i;s[j]=t[i];l[j]=1;}
}
m=l[0];
for(i=0;i<3;i++)
{
if(l[i]>=m) {m=l[i]; n=i;}
}
printf("\nla série est %d elle commence a l'indice %d et elle est de longueur %d",s[n],in[n]+1,l[n]);
return 0;
}
#include <stdlib.h>
int main()
{
int t[100],i,n,m,s[100],in[100],l[100],j;
printf("donner la dimension \n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("\n t[%d]= ",i+1);
scanf("%d",&t[i]);
}
for(i=0;i<n;i++)
{
printf("t[%d]= %d\t",i+1,t[i]);
}
s[0]=t[0];l[0]=0;in[0]=0;j=0;
for(i=0;i<n;i++)
{
if(t[i]==s[j]) l[j]=l[j]+1;
else {j++;in[j]=i;s[j]=t[i];l[j]=1;}
}
m=l[0];
for(i=0;i<3;i++)
{
if(l[i]>=m) {m=l[i]; n=i;}
}
printf("\nla série est %d elle commence a l'indice %d et elle est de longueur %d",s[n],in[n]+1,l[n]);
return 0;
}
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
main(){
int n,i,k=0,l=0,p,c,d=0,r=0,b=1;
printf("donnez la taille du tableau \n ");
scanf("%d",&n);
int *t;
t=(int*)malloc(n*sizeof(int));
for(i=0;i<n;i++){
printf("donnez elem t[%d] \n ",i);
scanf("%d",&t[i]);
}
p=t[0];
for(i=1;i<n;i++){
if(d!=2){
if(t[i]==p){
if(d==0){
k++;}
if(d==1){
r++;}
if(i==n-1){
goto a;}
continue;}
if(t[i]!=p){
if(i==n-1){
goto a;}
c=i;
p=t[i];
d++;
b++;
}
}else{
a : if(k<r){
l=c;
k=r;
d=1;
r=0;}
}
}
if(b>3){
printf("le plus grand serie est de %d son premier est indice est %d et son longeur est %d",t[l-k-1],l-k-1,k+1);}
else{
printf("le plus grand serie est de %d son premier est indice est %d et son longeur est %d",t[l],l,k+1);}
getch();
}
#include<conio.h>
#include<stdlib.h>
main(){
int n,i,k=0,l=0,p,c,d=0,r=0,b=1;
printf("donnez la taille du tableau \n ");
scanf("%d",&n);
int *t;
t=(int*)malloc(n*sizeof(int));
for(i=0;i<n;i++){
printf("donnez elem t[%d] \n ",i);
scanf("%d",&t[i]);
}
p=t[0];
for(i=1;i<n;i++){
if(d!=2){
if(t[i]==p){
if(d==0){
k++;}
if(d==1){
r++;}
if(i==n-1){
goto a;}
continue;}
if(t[i]!=p){
if(i==n-1){
goto a;}
c=i;
p=t[i];
d++;
b++;
}
}else{
a : if(k<r){
l=c;
k=r;
d=1;
r=0;}
}
}
if(b>3){
printf("le plus grand serie est de %d son premier est indice est %d et son longeur est %d",t[l-k-1],l-k-1,k+1);}
else{
printf("le plus grand serie est de %d son premier est indice est %d et son longeur est %d",t[l],l,k+1);}
getch();
}