Тема: Допоможіть знайти помилку

Програма повинна перевіряти введені символи, якщо ввели 1, то прінтф повинен виводити t, а якщо якийсь інший символ, то f. Проте моя програма виводить f незалежно від того, який символ було введено, навіть коли ввожу 1. Компілятор помилок не видає. У чому моя помилка?

#include <stdio.h>
int main() {
     
  char a;
  char h;
  char k [] = {'1', '2', '3', '4', '5', '6', '7', '8', '9'};
    printf("ENTER POSITIVE INTERGER NUMBER:");
    scanf ("%c", &a);

  while(a!='\n')
  {
      a = fgetc(stdin);
    if (a==k[0])
    h ='t';
      else
      h ='f';
      
}
printf ("%c", h);

return 0;
}
   

2

Re: Допоможіть знайти помилку

bionic_shredder написав:
 scanf ("%c", &a);
 a = fgetc(stdin);

А нащо ви a два рази читаєте?

3

Re: Допоможіть знайти помилку

В якому сенсі? Як тоді, на вашу думку, краще реалізувати?

4

Re: Допоможіть знайти помилку

Читати один раз, і викинути цикл.

5

Re: Допоможіть знайти помилку

Можете, будь ласка, кодом написати

6

Re: Допоможіть знайти помилку

#include <stdio.h>
int main() {
     
  char a;
  char h;
  char k [] = {'1', '2', '3', '4', '5', '6', '7', '8', '9'};
    printf("ENTER POSITIVE INTERGER NUMBER:");

      a = fgetc(stdin);
    if (a==k[0])
    h ='t';
      else
      h ='f';
      

printf ("%c", h);

return 0;
}

7

Re: Допоможіть знайти помилку

Програма працює некоректно:( пропускає ввід типу q1q, тоді як повинна видавати помилку

8

Re: Допоможіть знайти помилку

В умові нічого про це не сказано, чекайте, поки хтось із телепатичними здібностями сюди зазирне.

9

Re: Допоможіть знайти помилку

Вибачте за неточність формулювання умови. Можете щось порадити, щоб вирішити проблему?

10

Re: Допоможіть знайти помилку

Ну, можете спробувати все ж умову викласти. Бо поки її тут немає, вам тут лише телепати допоможуть. А допомагати з неповною умовою - це гарантовано отримувати на будь-яку спробу допомогти "а ви не врахували, що там за умовою все навпаки".

11

Re: Допоможіть знайти помилку

Програма повинна виводити t, якщо ми вводимо ТІЛЬКИ 1, та f, якщо ми вводимо щось інше, окрім 1 - символ, декілька символів, одиницю і декілька символів, інші числа, числа, серед яких може бути 1 і тд.

12

Re: Допоможіть знайти помилку

Тоді вам не окремі символи треба порівнювати, а стрічки.