Programlamada yeniyim, bu benim için zor. Kullanıcının ilk girdisi -999 ise programın bitmesine ihtiyacım var, eğer değilse o zaman account_num, last_name ve balance girişine devam ederler. Ancak kullanıcı ilk girdiden sonra -999'a girerse, girdilerini sonlandırır ve sonuçları görüntüler. İstemcimi [x] .account_num artan sıraya göre düzenlenirken bu -999 bölümünün nasıl çalıştığını anlayamıyorum .. Kodum aşağıda.Verilerimi nasıl sıralarım?
#include <stdio.h>
void bubble_sort(int[], int);
struct information
{
int account_num;
char last_name[30];
float balance;
};
int main()
{
/* declare variables */
struct information client[5];
int i, x, temp;
char c;
/* Prompt user */
printf ("Enter account number, last name, and balance.\n");
printf ("Enter -999 to end input:\n\n");
/* prompt user to enter number of people */
x = 0;
while (client[x].account_num != -999)
{
int tmp;
scanf ("%i", &tmp);
/* if types -999 as their first input program ends */
if (tmp == -999)
{
break;
}
else if (tmp < 1 || tmp > 1000)
{
printf ("*** Invalid account number. Please enter 1 - 1000 or -999 to exit ***\n");
}
else
{
client[x].account_num = tmp;
x ++;
}
bubble_sort(client[x].account_num, i);
scanf("%s", client[x].last_name);
while ((c = getchar() != '\n') && c != EOF); /* clear input buffer. */
scanf("%.2f", &client[x].balance);
}
for (x = 0; x < 5; x++)
printf("%i\n", &client[x].account_num);
return 0;
}
void bubble_sort(int list[], int i)
{
int e, d, t;
for (e = 0; e < (i - 1); e++)
{
for (d = 0; d < i - e - 1; d++)
{
if (list[d] > list[d + 1])
{
/* swapping */
t = list[d];
list[d] = list[d + 1];
list[d + 1] = t;
}/* end for*/
}/*end for*/
}/* end for */
}/* end function */
Çok teşekkür ederim, bunu yapmayı nasıl yapacağımı anlamaya çalışıyorum. Her denediğimde, sadece "Geçersiz" satırını çıkarırdım. – user5932832
Ama nasıl olsun, döngü sadece 5 satırdan sonra bitmeyecek? Nasıl -999 giriş – user5932832
@ user5932832 ise sonunu nasıl bulabilirim? 5 istemciyi tutan istemci [5] 'yi tanımladınız, dolayısıyla döngü 5 girdiden sonra bitmelidir. Aksi halde, müşteri diziniz sınırların tükenmez. Kodu biraz daha parametrelendirdim, en üstte bir MAX_CLIENTS tanımı ekleyerek sadece maks. Tek bir yerde müşteri sayısı. Sonuçta, her şey ne elde etmek istediğinize bağlıdır - kullanıcının istemciyi belirtmesini isteyip istemediğinize, aynı istemcinin ayrıntılarını tekrar düzenlemeye izin vermek isteyip istemediğinize vb. işlevselliğin hangi yöne gitmesi gerektiği net değil. – Guido