Ich möchte nur wissen, was falsch ist und wie es zu beheben ist.Was ist los mit meinem ersten 'c' Bubble Sortierprogramm?
Es sieht aus wie alles, was richtig ist, aber wenn Sie die EXE-Datei ausführen abstürzen es jedes Mal,
#include <stdio.h>
#include <stdlib.h>
// first list filling function:
void T_filling(int T[],int n){
int i;
for(i=1 ;i<=n ;i++){
printf("enter the number:",i+1);
scanf("%d",&T[i]);
}
}
//then the main algorithm:
int main()
{
int j,k,l;
int n,x;
// you can order up to 100 integer number
int T[100];
printf("This program is to order numbers decreasingly\n");
printf("how many numbers you want to order?\n");
// scanning the number of elements in the list
scanf(n);
//filling the list
T_filling(T[100],n);
//bubble sort Algorithm
for(j=1;j<=n-1;j++){
for(k=1;k<=n-j;k++){
if(T[k+1]>T[k]){
x=T[k];
T[k]=T[k+1];
T[k+1]=x;
}
}
}
for(l=1;l<=n;l++){
//printing the result on screen
printf("%d;",T[l]);
}
printf("\n");
system("pause");
return 0;
}
Zunächst einmal - was lässt Sie glauben, dass irgendetwas nicht in Ordnung ist? Wenn Sie nicht so ein wichtiges Detail angeben ... eine Beschreibung dessen, was passieren sollte und was stattdessen geschieht, berauben Sie sich potentieller Antworten, weil die Leute einfach weiterziehen. Zweitens zeigt ein kurzer Code-Scan, dass Sie sich nicht bewusst sind, dass ein C-Array bei 0 nicht 1 indiziert wird. Daher überspringen alle Ihre "for" -Schleifen wie "for" (l = 1) das erste Element (und verwenden möglicherweise ein (das Element über das Ende des gültigen Puffers hinaus) – mah
es war vorgesehen, das erste Element zu überspringen, die maximale Anzahl der zu ordnenden Elemente ist 100 nicht 101, das Element 0 wird im gesamten Algorithmus –
übersprungen, wenn Sie 'T [100]' deklarieren , Ihre gültigen Elemente sind die Indizes 0 bis 99. Daher haben Sie nur 100 Elemente und müssen mit 0 beginnen. – mah