Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Lepricon228
0 / 0 / 0
Регистрация: 15.10.2018
Сообщений: 41
1

Как сделать в функции проверку на число, причем положительное?

04.11.2018, 22:57. Просмотров 788. Ответов 4
Метки нет (Все метки)

Здравствуйте, как сделать в функции проверку на число, чтоб это было число и причем положительное, вот код почему-то не работает, хотя без функции пашет и все норм:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
#include <stdlib.h>
 
void input(int a[])
{
    int i, f;
    do
    {
    f=scanf("%d", &a[i]);
    if(a[i]<0)
    {
    f=scanf("%d", &a[i]);
    }
    fflush(stdin);
    }
    while (f==0);
}
int main()
{
  int i, k, n, f;
    k=5;
   int kek[5];
    for(i=0;i<k;i++)
    {input(&kek[i]);}
    for(i=0;i<k;i++)
    printf("%d ", kek[i]);
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2018, 22:57
Ответы с готовыми решениями:

В функции необходимо сделать проверку пустой ли указатель или нет
Помогите разобраться. Существует указатель на структуру. Этот указатель (его адрес передается в...

Как сделать проверку на double в scanf, если ожидается int?
Возможно ли как-то средствами scanf отловить ввод десятичной точки, чтобы отловить ввод типа 5.8...

Как сделать проверку, и если значение не подходит - выводить сообщение с ошибкой?
как сделать проверку что бы если значения не подходит то выводило сообщение с ошибкой и после...

Вернуть число 0, если число положительное, и 1, если число отрицательное
Написать программу на си с использованием функций: Возвращает число 0, если число положительное, и...

Найти в последовательности минимальное положительное число
Найти в последовательности минимальное положительное число

4
stake-k26
538 / 411 / 323
Регистрация: 25.04.2016
Сообщений: 1,191
05.11.2018, 01:08 2
Прочитать весь поток ввода до \n или EOF, а затем проанализировать что же там оказалось в потоке. По сути прочитать строку и проверить, что в ней есть только символы '0' - '9', и если это так, тогда перевести строку в число.
0
Байт
Эксперт C
20037 / 12659 / 2662
Регистрация: 24.12.2010
Сообщений: 26,358
05.11.2018, 11:28 3
Лучший ответ Сообщение было отмечено Lepricon228 как решение

Решение

Lepricon228, Переменная i в функции не инициализирована. И куда вы вводите в 9-й и 12-й строке, никто не знает. То есть вы неправильно организовали передачу параметров.
Цитата Сообщение от Lepricon228 Посмотреть сообщение
без функции пашет и все норм:
Если вы покажете вариант без функции, легче будет вам помочь. Но думаю, что-то вроде этого
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
#include <stdlib.h>
 
void input(int *a)
{
    int  f;
    do    {
      f=scanf("%d", a);
    if(*a<0)    {
      f=scanf("%d", a);
    }
    fflush(stdin);
    }
    while (f==0);
}
int main()
{
  int i, k, n, f;
    k=5;
   int kek[5];
    for(i=0;i<k;i++)
      input(&kek[i]);
    for(i=0;i<k;i++)
      printf("%d ", kek[i]);
}
1
Lepricon228
0 / 0 / 0
Регистрация: 15.10.2018
Сообщений: 41
05.11.2018, 17:46  [ТС] 4
Можно ещё вот так:
C
1
2
3
4
5
6
7
8
9
10
void input(int a[]) 
{ 
int i, f; 
do 
{ 
f=scanf("%d", &a[i]); 
fflush(stdin);  
} 
while (f==0 || a[i]<0); 
}
0
Байт
Эксперт C
20037 / 12659 / 2662
Регистрация: 24.12.2010
Сообщений: 26,358
05.11.2018, 19:38 5
Цитата Сообщение от Lepricon228 Посмотреть сообщение
Можно ещё вот так:
Вопрос простой. Попробуйте на него ответить. Что такое "i"? Если вы сможете ответить - тогда - Ура! Остается этот ваш ответ ответ объяснить туповатому, но исполнительному роботу, то бишь транслятору.
Короче - так НЕЛЬЗЯ!
0
05.11.2018, 19:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2018, 19:38

Возвести положительное число в отрицательную степень
Нужно возвести положительное число в отрицательную степень. Например 2-200. С положительной...

Определить наименьшее положительное число в последовательности
(СИ)Вводится последовательность ненулевых чисел, 0 — конец последовательности. Определить...

Машинная арифметика.Определить отрицательное(положительное) число
Здравствуйте! Помогите, пожалуйста, разобраться с одним вопросом. Мне необходимо определить,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru