Suppression d'un intervalle (de lignes) dans une matrice

logout02 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour donc voila j'ai un petit problème c'est je suis encore débutant dans la programmation je voudrais savoir si on me donne un intervalle de (2+) lignes a supprimé d'une matrice qu'est ce que je dois faire ? parce que la j'ai toute essayé et j"ai rien trouvé voila ma solution (ça marche pas correctement) merci de m'aidé le plus tôt possible :D


Solution :
#include <stdio.h>
void main()
{


int c, s, i , j , n ,b ,h ,o, md [100][5] , jps , mps, aps,hps , hfps , js , ms , as , hs ,hfs , k;
printf("donner n");
scanf("%d",&n);
b=1;
for (i=0;i<n;i++)
{
for (j=0;j<5;j++)
{
md[i][j]=b;
b=b+1;
}
}
for (i=0;i<n;i++)
{
for (j=0;j<5;j++)
{
printf ("%d \t",md[i][j]);
}
printf("\n");
}
printf("donner le jour");
scanf("%d",&js);
printf("donner le mois");
scanf("%d",&ms);
printf("donner l'annee");
scanf("%d",&as);
printf("donner l'heure");
scanf("%d",&hs);
printf("donner l'heure fin");
scanf("%d",&hfs);
printf("donner le jour p");
scanf("%d",&jps);
printf("donner le moisp");
scanf("%d",&mps);
printf("donner l'anneep");
scanf("%d",&aps);
printf("donner l'heurep");
scanf("%d",&hps);
printf("donner l'heure finp");
scanf("%d",&hfps);
for (i=0;i<n;i++)
{
j=0;
if (md[i][j]==js && md[i][j+1]==ms && md[i][j+2]==as && md[i][j+3]==hs && md[i][j+4]==hfs )
{c=i;}
if (md[i][j]==jps && md[i][j+1]==mps && md[i][j+2]==aps && md[i][j+3]==hps && md[i][j+4]==hfps )
{k=h;}
}
do
{
for (i=0;i<n;i++)
{


for (j=0;j<5;j++)

{
if ((i>=c))
{
md[i][j]=md[i+1][j];

}

printf("n= %d \n",n);
}
}
n=n-1;
}

while (n>(n-(k-c)));




for (i=0;i<n;i++)
{
for (j=0;j<5;j++)
{
printf ("%d \t",md[i][j]);
}
printf("\n");
}
}
A voir également:

1 réponse

[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
Salut logout02,

Je ne vois pas bien ce que fait ton programme, en particulier par rapport à ta question ("Suppression d'un intervalle (de lignes) dans une matrice).

En tout cas, il ne peut donner rien de bon, "h" n'étant pas initialisé, il va contenir une valeur imprévisible, et donc k auquel tu affectes h également.

Poste ton code entre balises de code pour qu'il soit lisible sur le forum.


Dal
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
Pour supprimer des lignes d'un tableau, il faut déplacer les éléments restants du tableau vers l'emplacement de suppression.

Le plus simple, pour faire cela, est de déterminer le pointeur sur le premier élément supprimé (destination de la copie), le pointeur sur le premier élément à décaler (origine de la copie) et le nombre d'éléments à décaler. Après cela se fait avec une boucle while comme :

    /* move now */
    while (nb_elems--)
        *dest++ = *orig++;

Dal
0