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
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
A voir également:
- Probleme d'execution en c
- Un administrateur vous a refusé l'execution de cette application - Forum Windows 10
- Erreur d'execution 13 ✓ - Forum Programmation
- Erreur d'execution 1004 ✓ - Forum VB / VBA
- Le service spouleur d'impression local n'est pas en cours d'exécution - Guide
- Le service sans fil windows n'est pas en cours d'exécution sur cet ordinateur - Forum WiFi
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
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
4070
Date d'inscription
jeudi 18 août 2011
Statut
Membre
Dernière intervention
19 juin 2017
724
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 ☺ ☺ ☺