Ich schreibe ein Programm für eine Kursarbeit, im Grunde seine Idee ist es, ein Element in einem Array vor dem Sortieren zu verfolgen und seinen Index nach dem Sortieren zu finden.Es funktioniert für Zahlen bis ca. 9999 denke ich aber wann ich betrete einen großen Eingang als 18383833 (am ersten Eingang) der mac OS Terminal gibt mir diese Fehlermeldung: Segmentierungsfehler: 11Arrays und Sortierung in C
hier ist mein Code:
#include <stdio.h>
#include<stdlib.h>
void swap(int *xp, int *yp)
{
int temp = *xp;
*xp = *yp;
*yp = temp;
}
// A function to implement bubble sort
void bubbleSort(int arr[], int n)
{
int i, j;
for (i = 0; i < n-1; i++)
// Last i elements are already in place
for (j = 0; j < n-i-1; j++)
if (arr[j] > arr[j+1])
swap(&arr[j], &arr[j+1]);
}
int main()
{
int y; // 2nd INPUT : the nth order of the arriving person
printf("Enter the nth order of the arriving person \n");
scanf("%i" , & y);
int array[y]; // array to store the values of the number of people in queue
int i; //loop counter
printf("Enter the value of ticket of the first person \n");
scanf("%i " , & array[0]);
printf("\n");
for(i=1 ; i<y ; i++) {
array[i]= (31334 * array[i-1]) % 31337;
//printf(" %i \n" , array[i]);
}
int r; //loop counter
bubbleSort(array , y);
for(r=0 ; r<y ; r++) {
printf("%d (%i) \n" , array[r] , r);
}
}
ohne Bezug '"% i "' -> '"% i "' – BLUEPIXY
Willkommen bei Stack Overflow! Bitte [bearbeiten] Sie Ihre Frage, um uns zu zeigen, welche Art von Debugging Sie durchgeführt haben. Ich erwarte, dass Sie Ihren [mcve] in Valgrind oder einem ähnlichen Checker ausgeführt haben und mit einem Debugger, wie zum Beispiel GDB, untersucht haben. Stellen Sie sicher, dass Sie auch einen vollständigen Satz von Compiler-Warnungen aktiviert haben. Was haben die Tools Ihnen gesagt und welche Informationen fehlen ihnen? Und lesen Sie Eric Lippert [Wie kleine Programme zu debuggen] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). –
Höchstwahrscheinlich überschreitet Ihr Array mit variabler Länge die Grenzen Ihrer Plattform für die lokale Variablengröße - versuchen Sie stattdessen, dynamisch (mit 'malloc()' oder 'calloc()') zuzuweisen. –