Probleme d'execution en c

Résolu/Fermé
xko Messages postés 55 Date d'inscription mardi 15 mars 2016 Statut Membre Dernière intervention 28 juillet 2022 - Modifié par xko le 15/03/2016 à 15:48
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 15 mars 2016 à 19:24
salut j'ai un pgm en c mais il n'execute pas et je ne sais pas prq svp aidez-moi et mercii
‪#‎include‬ <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{ int i,j,x,s,n;
int t[n];
puts("donner la taille du tableau ");
scanf("%d",&n);
puts("remplir le tableau svp\n");
for(i=1;i<=n;i++){
scanf("%d",&t[i]);}
puts("notre tableau est maintenant trie\n");
for(i=1;i<=n;i++){
for(j=i+1;j<=n;j++){
if(t[i]>t[j]){
x=t[i];
t[i]=t[j];
t[j]=x;}} }

for(i=1;i<=n;i++){
printf("%d\n",t[i]);}
puts("entrer un indice\n ");
scanf("%d",&s);
for (i=1;i<=n;i++){
if(i==s){
for(i=s;i<n;i++){
t[i]=t[i+1];
n=n-1;
} }}
puts("le tableau apres la suppression\n");
for(i=1;i<=n;i++){
printf("%d\n",t[i]);}
system("pause");
return 0;
}

3 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 2
Modifié par cptpingu le 17/03/2016 à 15:15
Ah ouais, en fait il cross post ça partout...
https://codes-sources.commentcamarche.net/forum/affich-10062064-les-tableaux-en-c

Ici c'est t[i] et non &t[i]

C'est bel et bien "&t[i]" qu'il faudrait utiliser (les deux fonctionnent, cela dit), ou alors "t + i" (oui, oui, "t + i" fonctionne, car scanf demande un pointeur).

À noter aussi que la solution proposée par Henry_Merdocul ne fonctionne qu'en C99 et supérieur, et a certaines limitations, cf: https://stackoverflow.com/questions/10675399/why-cant-the-size-of-a-static-array-be-made-variable

Une bonne solution serait de "malloc" la bonne taille ou alors prévoir une taille fixe assez grande (et empêcher l'utilisateur de la dépasser). Le VLA c'est un peu cracra quand même. Je précise en passant que le C++ ne gère pas le VLA, donc si on fait du C en compilant avec un compilo C++ (comme le font la plupart des débutants qui pensent, à tort, que le C++ est un surensemble du C), ça va apporter son lot de surprises :p.
1
Utilisateur anonyme
15 mars 2016 à 15:54
Tu ne déclares pas ton tableau correctement.
Quand on met une variable pour une taille de tableau, elle doit toujours avoir une valeur. De plus, la variable "n" que tu utilises n'a même pas été déclarée.
Dans ta boucle pour le remplir, tu pars de la case numérotée 1, or un tableau commence à la case numérotée 0.


‪#‎include‬ <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{ int i,j,x,s,n;
puts("donner la taille du tableau ");
scanf("%d",&n);
int t[n];//On déclare le tableau avec la valeur de "n" demandée
puts("remplir le tableau svp\n");
for(i=0;i<n;i++){
scanf("%d",&t[i]);}
puts("notre tableau est maintenant rempli\n");
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if(t[i]>t[j]){
x=t[i];
t[i]=t[j];
t[j]=x;}} }

for(i=0;i<n;i++){
printf("%d\n",t[i]);}
puts("entrer un indice : ");
scanf("%d",&s);
puts("\n");
for (i=0;i<n;i++){
if(i==s){
for(i=s;i<n;i++){
t[i]=t[i+1];
n=n-1;
} }}
puts("le tableau apres la suppression\n");
for(i=0;i<n;i++){
printf("%d\n",t[i]);}
system("pause");
return 0;
}

Réessaye comme ça;
0
Sugel Messages postés 4070 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 19 juin 2017 724
15 mars 2016 à 17:33
argh. la coloration syntaxique ?
0
xko Messages postés 55 Date d'inscription mardi 15 mars 2016 Statut Membre Dernière intervention 28 juillet 2022 1
15 mars 2016 à 18:11
meeeeeeeeeeeerciiiiiiii ☺ ☺ ☺
0
Utilisateur anonyme
15 mars 2016 à 15:56
scanf("%d",&t[i]);


Ici c'est t[i] et non &t[i]
-2
Utilisateur anonyme
15 mars 2016 à 15:57
Ah je l'avais pas vue celle-ci
0