Il s'agit d'un programme d'impression de la valeur la plus petite et de sa position dans un tableau (défini par l'utilisateur). mais à l'exécuter, il montre la suite d'erreur suivante: p> < Pré> xxx pré> Que peut être la (s) raison (s) possible (s) pour cela? p> p>
3 Réponses :
première erreur, comme indiqué dans l'un des commentaires, déclare un tableau de taille N avant même de savoir combien n est.
La deuxième erreur est de boucle dans votre fonction principale qui va de 0 à N, c'est-à-dire l'index d'un tableau est hors limites. P>
Essayez ceci: p>
int main() {
int n = 0, j = 0;
printf("Enter the size of the array: ");
scanf("%d", &n);
int a[n];
for (j = 0; j < n; j++) {
printf("a[%d] = ", j + 1);
scanf("%d", &a[j]);
}
position_smallest(a,n);
}
La deuxième erreur n'existe pas. La condition de l'OP I <= N-1 est équivalente à votre i
Tout d'abord: à la fois ininitialisé. Initialisez-les sinon vous obtiendrez des valeurs de déchets. P> Que se passe-t-il si Vous allouez Vous obtiendrez Que se passe-t-il si une inaidification Vous allouez 2 ^ 32 octets pour tableau vous n'obtiendrez pas second si cela ne suffit pas: p> accédera à Troisième fonction de votre boucle à l'intérieur de la fonction: p> est identique à: p> Et enfin, vous avez un bogue dans votre code, je crois: p> devrait être: p> car il est Très probablement que vous souhaitez comparer un autre numéro à un élément déjà le plus petit de ne pas n code> par hasard (très probable) est 0 code> Dans la ligne suivante? p> 0 code> octets pour tableau A [] code>. Vous entrez ensuite 10 code> dans la ligne suivante p> défaut de segmentation code> dans pour () Code> Boucle ci-dessous parce que votre boucle tente de mettre des éléments 10 code> où vous n'avez attribué aucune mémoire du tout. p> n code> par hasard ( très probable) est 2 ^ 32 * 4 octets ( int code> S max)? p> A [] code>. Vous entrez ensuite 10 code> dans la ligne suivante p> défaut de segmentation code> mais vous allouerez 2 ^ 32 * 4 octets de mémoire pour votre programme et vous n'utiliserez que 10 p> 11th Code> Elément du tableau qui est un comportement non défini, et vous pourriez même obtenir défaut de segmentation code> là. Comme vous le savez dans les tableaux C code> sont indexés de 0 code> à n - 1 code> (si n code> est la taille de la matrice ). P> a [0] code>. Voici mon code P> #include <stdio.h>
#include <stdlib.h>
int position_smallest(int a[],int n) {
int smallest = a[0];
int i=0,k=0;
for(i=0; i<=n-1; i=i+1) {
if(a[i]<smallest) {
smallest = a[i];
k = i;
}
}
printf("The smallest value is %d\n", smallest);
printf("It's position is %d\n", k);
return 0;
}
int main() {
int n=0, j=0;
printf("Enter the size of the array: ");
scanf("%d", &n);
int *a = malloc(sizeof(int) * n);
for(j=0; j<n; j=j+1) {
printf("a[%d] = ", j);
scanf("%d", &a[j]);
}
position_smallest(a,n);
return 0;
}
Merci @gox pour avoir donné des connaissances sur une nouvelle fonction malloc () code>. Je ne connaissais pas cela avant votre réponse. 😃😃
Utilisez celui-ci:
#include <stdio.h>
int position_smallest(int a[],int n)
{
int smallest = a[0];
int i,k;
for(i=0; i<=n-1; i=i+1)
{
if(a[i]<a[0])
{
smallest = a[i];
k = i;
}
}
printf("The smallest value is %d\n", smallest);
printf("It's position is %d\n", k);
return 0;
}
int main()
{
int n,j;
int a[100];
printf("Enter the size of the array: ");
scanf("%d", &n);
for(j=0; j<n; j=j+1)
{
printf("a[%d] = ", j);
scanf("%d", &a[j]);
}
position_smallest(a,n);
}
Pour un début, vous créez un tableau de taille n mais n est inintitualisé à l'époque.
Vous ne pouvez pas aller de 0 à
n code> inclusif mais exclusif alors essayezj. Faites-moi savoir si cela vous a aidé. Tout d'abord, votre tableau
A code> S estn code> etn code> n'a aucune valeur tant que vous obtenez une entrée.Et c'est pourquoi mon compilateur ne peut pas le compiler quand il y a une taille
A code> est N.😃😃Je me demande ce que tu faisais pour comprendre votre bogue avant de la publier. La première chose est de commenter des lignes une par ligne jusqu'à ce que la faute SEG soit partie, puis vous êtes beaucoup plus concentré sur l'endroit où cela se passe. Si vous ne comprenez toujours pas votre bogue, vous pouvez ensuite publier un programme plus minimal et demander de l'aide.