Decalage

mb42 Messages postés 553 Statut Membre -  
Reivax962 Messages postés 3742 Statut Membre -
Bonjour,

on a un tableau qui consititue de carectere

et je dois inserer une valeur a un indice bien defini

a titre d'exemple le tableau contient

tab 1 4 6 7 3 9

j'insere la valeur 2 a l'indice 3

donc le resultat doit etre comme ca

1 4 6 2 7 3 9

don on a un ecrasement

povez me corriger mon programme :

#include<stdio.h>
#include<conio.h>
main()
{
int tab[50],i,taille,val,indice;
do
{
printf("donner la taille du tableau");
scanf("%d",&taille);
}
while((taille<=0)||(taille>=50));
for(i=0;i<taille;i++)
{
printf("donner la valeur %d du tableau",i);
scanf("%d",&tab[i]);
}
printf("siai un valeur");
scanf("%d",&val);
printf("donner l'emplacement ou la valeur doit etre saisie");
scanf("%d",&indice);
for(i=0;i<=taille;i++)
{
if(i==indice)

tab[i]=val;
tab[i+1]=tab[i];
}
for(i=0;i<taille;i++)
{
printf("le valeur du tableau est %d\n",tab[i]);
}
getch();
}

merci d'avance

3 réponses

Reivax962 Messages postés 3742 Statut Membre 1 011
 
Bonjour,

C'est dans ta boucle que cela ne va pas, car tu écrases tab[i] par val avant de le passer à l'indice suivant...
Essaie ça :

int temp;
for(i=0; i<=taille; i++)
{
  if(i>=indice)
  {
    temp = tab[i];
    tab[i]=val;
    val = temp;
}


Xavier
0
mb42 Messages postés 553 Statut Membre 7
 
ca marche pas car
pour mon exemple

il m'affiche

1 4 6 2 7 3

el n'affiche pas 9
0
Reivax962 Messages postés 3742 Statut Membre 1 011
 
Bonjour,

C'est normal, car ta fonction d'affichage s'arrête à taille, alors qu'on vient de rajouter une valeur... Donc il faut que tu affiches une valeur de plus.

Xavier
0