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 3840 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 23 août 2024 - 15 mars 2016 à 19:24
cptpingu Messages postés 3840 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 23 août 2024 - 15 mars 2016 à 19:24
A voir également:
- Probleme d'execution en c
- Erreur d'execution 1004 - Forum Programmation
- Erreur d'execution '1004' ✓ - Forum VB / VBA
- Microsoft excel attend la fin de l'exécution d'une action ole d'une autre application ✓ - Forum Word
- Erreur d'exécution 13 incompatibilité de type ✓ - Forum Programmation
- Le service spouleur d'impression local n'est pas en cours d'exécution - Guide
3 réponses
cptpingu
Messages postés
3840
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
23 août 2024
2
Modifié par cptpingu le 17/03/2016 à 15:15
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
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.
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.
Utilisateur anonyme
15 mars 2016 à 15:54
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;
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;
Sugel
Messages postés
4076
Date d'inscription
jeudi 18 août 2011
Statut
Membre
Dernière intervention
19 juin 2017
726
15 mars 2016 à 17:33
15 mars 2016 à 17:33
argh. la coloration syntaxique ?
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
15 mars 2016 à 18:11
meeeeeeeeeeeerciiiiiiii ☺ ☺ ☺