Suppression d'un intervalle (de lignes) dans une matrice [Fermé]

Signaler
Messages postés
3
Date d'inscription
lundi 30 novembre 2015
Statut
Membre
Dernière intervention
5 décembre 2016
-
Messages postés
5541
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 mai 2021
-
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");
}
}

1 réponse

Messages postés
5541
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 mai 2021
933
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
Messages postés
5541
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 mai 2021
933
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