2016-04-11 17 views
2

sonuna sinyal nası girdi sonunu temsil eden bir değer olarak int 999 kullanılanc: girişine bir polinom kullanıcıları ister bu basit programda girdi

.

Ancak bu kullanıcıların girişine 999

bir Katsayısı ile polinom düğüm mümkün olmayacaktır çünkü iyi bir tasarım girdi sonunu temsil özgü olması alternatif bir anahtar var mı değil mi?

İlgili Kod: bitiş karakteri gelecek kadar

int coeff; 
int expon; 
int i = 1; 

printf("\nInput for polyNode %d (999 for exit):",i); 
printf("\n\tInput coeff : "); 
scanf("%d",&coeff); 

while(coeff != 999) 
{ 
    printf("\tInput expon : "); 
    scanf("%d",&expon); 
    insertBack(&polynomial, &polynomialRear, coeff, expon); 

    i++; 
    printf("\nInput for polyNode %d (EOF for exit):",i); 
    printf("\n\tInput coeff : "); 
    scanf("%d",&coeff); 
} 

printPoly(polynomial); 
printf("\n"); 
+2

Hayır, Hiçbir zaman bir katsayı olamaz bir tamsayı değeri kullanmak zorunda kalacak. Dizeleri kullanabiliyorsanız, "END" –

+1

Karakter dizisini tara gibi belirli bir dizeye gidebilir, mümkünse "int" yerine bir dönüşüm kullanın veya sonlandırmayı belirtmek için sayısal olmayan bir dize değeri kullanın. – Bathsheba

+2

Neden __have__ ana işlem ve döngü için aynı değişkeni kullanacaksınız? Sadece ayrı bir döngü kontrol değişkeni kullanın. –

cevap

1

Scanf'in dönüşünü kontrol edebilirsiniz. Tarama başarılı olursa, bu durumda, taranan bir öğe için 1 değerini döndürür. Tarama başarısız olursa, 0 veya EOF değerini döndürür. Tam olmayan değerlerin (harfler ...) girilmesi, while (1) döngüsünü sonlandıracaktır.
Ardından, bir zaman döngüsündeki giriş akışını getchar() ile temizleyin.

int coeff; 
int expon; 
int i = 1; 

while(1) 
{ 
    printf("\nInput for polyNode %d :",i); 
    printf("\n\tInput coeff : "); 
    if ((scanf("%d",&coeff)) != 1) { 
     break; 
    } 

    printf("\tInput expon : "); 
    if ((scanf("%d",&expon)) != 1) { 
     break; 
    } 

    insertBack(&polynomial, &polynomialRear, coeff, expon); 

    i++; 
} 
while ((i = getchar()) != '\n' && i != EOF) ;//clear input stream 

printPoly(polynomial); 
printf("\n"); 
0

bekleyebilirsin, belki herhangi sembol sen (sayı değil, CRLF, TAB vb) diliyorum. Tam bir giriş dizesi aldıktan sonra bir işlem yapın.