Créer un tableau et supprimer une case sans décalage

Fermé
patronus891 Messages postés 5 Date d'inscription mardi 17 décembre 2019 Statut Membre Dernière intervention 21 octobre 2021 - Modifié le 17 déc. 2019 à 22:56
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 - 23 déc. 2019 à 10:07
Salut,

je suis étudiant en informatique L1 et débutant en langage de programmation C. Ayant une faible base en programmation (algorithme aussi) de tableau puisque ça fait une semaine qu'on a commencé ce chapitre.

Notre prof d'algorithmique nous a passé un devoir qui consiste à créer un tableau N élément de type entier, puis le programme doit supprimer le contenu d'une case MAIS il ne fera pas de décalage(la case restera vide).

Vous trouverez en bas le code que j'ai édité (incomplet) en langage C et un exemple de ce que le programme est censé afficher

PS: que ce soit en langage C ou en langage naturel, toute proposition est la bienvenue.

Merci

Le code :

#include <stdio.h>
int main()
{
 int i, n;
 int ta[i];
 
 /*i=compteur
  ta=tableau
  n=Nombre de case*/
 
printf("Saisir le nombre de case a creer\n");
 scanf("%d", &n);
 
  printf("Remplir le tab\n");
  
 
 for(i=1;i<=n;i++)
 {
 scanf("%d", ta[i]);
 }
 
 
 
 
 
 
 
 return 0;
}


Exemple du résultat attendu

A voir également:

2 réponses

[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
Modifié le 18 déc. 2019 à 10:14
Salut patronus891,

En ligne 5, que vaut
i
à ton avis ?

En ligne 17, ta boucle commence à 1, or, les indices de tableaux commencent à 0.

Ton code ne propose qu'une saisie d'un tableau dimensionné à l'exécution (c'est du C99). Après correction des problèmes ci-dessus, il faudra :

- afficher le contenu du tableau saisi
- retirer l'un des éléments
- afficher le contenu du tableau modifié

Puisque tu ne fais pas de décalage, tu auras toujours la même taille de tableau et il te faudra marquer la case supprimée comme étant "vide".

Pour cela, voilà quelques idées : tu peux définir une convention en mettant dans la case supprimée une valeur signifiant "vide" et que l'utilisateur ne doit pas saisir (il faudra informer l'utilisateur). Ou tu peux stocker séparément l'index de la case qui est réputée "vide", ou la liste des cases qui sont réputées "vides" si plusieurs suppressions doivent être possibles.

Dal
0
patronus891 Messages postés 5 Date d'inscription mardi 17 décembre 2019 Statut Membre Dernière intervention 21 octobre 2021
18 déc. 2019 à 12:04
Le Problème ce que si j'avais un peu de temps avant la date limite(du dev à rendre) je pourrais faire des recherches et mieux écrire mon code. Je n'ai pas compris la moitié de ce t'as écris , non pas par faute d'explication mais plutôt par mon manque de connaissance en ce sujet.

Donc si vs pouvez me donner le script en langage naturel je saurai le traduire en langage C.
0
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092 > patronus891 Messages postés 5 Date d'inscription mardi 17 décembre 2019 Statut Membre Dernière intervention 21 octobre 2021
Modifié le 18 déc. 2019 à 12:53
OK :
  • demander à l'utilisateur le nombre d'éléments du tableau et stocker ce nombre dans une variable entière
    N
    déclarée au préalable
  • déclarer et dimensionner un tableau de type entier afin qu'il puisse contenir
    N
    éléments
  • demander à l'utilisateur de saisir les éléments du tableau, et les stocker de l'indice
    0
    à l'indice
    N-1
    ...
  • afficher le contenu des
    N
    éléments du tableau, de l'indice
    0
    à l'indice
    N-1
    ...
  • demander à l'utilisateur d'indiquer quelle "case" de
    1
    à
    N
    il veut supprimer et stocker ce numéro dans une variable entière
    case_supprimee
    déclarée au préalable
  • afficher le contenu des
    N
    éléments du tableau, de l'indice
    0
    à l'indice
    N-1
    en vérifiant si l'on est arrivé à l'indice
    case_supprimee-1
    , et si c'est le cas ne rien afficher
0
patronus891 Messages postés 5 Date d'inscription mardi 17 décembre 2019 Statut Membre Dernière intervention 21 octobre 2021 > [Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024
Modifié le 20 déc. 2019 à 22:40
En suivant vos instructions et grâce à l'aide de quelques camarades, j'ai pu créer un programme qui demande à l'utilisateur de dimensionner un tableau, de le remplir et qui lui demande de supprimer un élément du tableau.

Le code est en bas.

Après quelques recherches, j'ai appris que pour que l'emplacement soit vide il faut faire un décalage à l'endroit supprimé donc s'il vous plaît dites-moi comment décaler( y'a t-il un truc comme while ou if pour décaler un élément) aussi s'il faut déclarer une nouvelle variable, grosso modo le code ????????

Le code :

#include <stdio.h>

int main()
{

int pos, i, nbr;
int t[50];

//---1) Demande à l'utilisateur le nombre de case à créer & remplissage du tableau-----//

printf(" Entrez le nombre des éléments dans le tableau : ");
scanf("%d", &nbr);
i=0;

printf(" Entrez les %d éléments : \n", nbr);
while(i < nbr)
{
scanf("%d", &t[i]);
i++;
}

//----2) suppression d'element------//

printf(" Entrez la case dont vous voulez supprimer l'élément: ");
scanf("%d", &pos);

if (pos >= nbr+1)
{
printf("la Suppression n'est pas possible.\n");
}
else
{
i=pos-1;

while (i< nbr - 1)
{
t[i] = t[i+1];
i++;
}

printf(" Aprés la suppression, le tableau = ");
i=0;
while (i < nbr - 1)
{
printf("%d", t[i]);
i++;
}
}

return 0;
}
0