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

Fermé
logout02 Messages postés 3 Date d'inscription lundi 30 novembre 2015 Statut Membre Dernière intervention 5 décembre 2016 - 5 déc. 2016 à 02:57
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 5 déc. 2016 à 15:22
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 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
5 déc. 2016 à 11:18
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 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
5 déc. 2016 à 15:22
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