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

Допустить ввод в массив только чисел

07.09.2013, 17:22. Просмотров 697. Ответов 9
Метки нет (Все метки)

Вопрос такой:мне нужно написать программу,в которой пользователь вводит число типа float.Если то,что он ввёл,состоит из цифр и там присутствует одна точка,то выводится сообщение о том,что всё нормально;если то,что он ввёл,содержит буквы,посторонние сиволы или больше одной точки,то ошибка...Я хочу создать 2 массива..в одном цифры от 0 до 9 и точка,в другой будет записываться строка,которую введёт пользователь..Теперь вопрос:как нужно проверять,есть ли в массиве(строке пользователя) элементы другого массива(с цифрами и точкой)?)Прошу помочь)
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2013, 17:22
Ответы с готовыми решениями:

Допустить ввод только чисел
Есть работа с структурами, надо ввести номер аудитории и вывести на экран, но можно вводить только...

Допустить ввод только цифр
Так и не нашел удобных функций контроля ввода. Вводится символьная строка (до 7 символов) Надо...

Допустить ввод только цифр
нужно сделать так, чтобы при вводе появлялась ошибка, если пользователь вводит буквы... думал...

Проверка на ввод только чисел
Привет! У меня есть код: #include "stdio.h" int main() {

Предусмотреть ввод только отрицательных чисел
#include <stdio.h> #include <conio.h> int main(void) { int i, j = 0, n; printf("\n\t Enter...

9
GoldenChild
29 / 29 / 18
Регистрация: 12.06.2013
Сообщений: 65
07.09.2013, 18:12 2
Поиском элемента одного массива в другом:
C++
1
2
3
4
5
6
7
8
bool check (int a[], int n, int key) {
    for (int i = 0; i < n; i++) {
        if (a[i] == key) {
            return true;
        }
    }
    return false;
}
Функция вернет true если найдет ключ в массиве a[n], если не найдет - вернет false.
Тоесть ты берешь каждый элемент массива, который нужно проверить, и проверяешь его, как ключ, этой функцией.
Если хоть один элемент выдал неправду - твой массив некорректный.
0
Setplus29
0 / 0 / 0
Регистрация: 07.09.2013
Сообщений: 4
07.09.2013, 18:15  [ТС] 3
C
1
bool check (int a[], int n, int key)
Поясните,пожалуйста,вот эту строку.Я просто начинающий и не так много знаю)
0
GoldenChild
29 / 29 / 18
Регистрация: 12.06.2013
Сообщений: 65
07.09.2013, 18:17 4
Цитата Сообщение от Setplus29 Посмотреть сообщение
C
1
bool check (int a[], int n, int key)
Поясните,пожалуйста,вот эту строку.Я просто начинающий и не так много знаю)
Это функция, которая возвращает либо true, либо false. В нее ты передаешь массив, кол-во его элементов и ключ поиска. Можно логический тип заменить на int, и возвращать 0 либо 1.
0
07.09.2013, 18:17
Somebody
3101 / 1622 / 251
Регистрация: 03.12.2007
Сообщений: 4,223
Завершенные тесты: 3
07.09.2013, 18:23 5
А чем не устраивает просто scanf'ом прочитать?
0
Setplus29
0 / 0 / 0
Регистрация: 07.09.2013
Сообщений: 4
07.09.2013, 18:23  [ТС] 6
А как пользоваться этой функцией?)Просто я ещё эту тему не проходил)
0
fanatdebian
Z3JheSBoYXQ=
339 / 234 / 83
Регистрация: 08.07.2012
Сообщений: 577
07.09.2013, 18:27 7
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
 
void GetFloat();
 
 
int main(){
    printf("Float value: ");
    GetFloat();
    return 0;
}
void GetFloat(){
    char sym; 
    int array[255] = {0};
    int after[255] = {0};
    int index=0;
    int index_after=0;  
    bool flag = false;
    
    while((sym = getchar())!='\n'){
        if(sym > 0x29 && sym < 0x40){
            if (flag) {
                after[index_after++] = sym-0x30;
            } 
            else {                      
                array[index++] = sym-0x30;
            }
        }
        if('.' == sym ){
            flag = true;
        }
    }
    int some;
    printf("Value in array: ");
    for(some=0; some<index-1; some++){
        printf("%d", array[some]);
    }
    printf("\nValue in after point: ");
    for(some=0; some<index_after; some++){
        printf("%d", after[some]);
    }   
 
}
Bash
1
2
3
Float value: sdfsdf123.sdfsdf4567
Value in array: 123
Value in after point: 4567
0
Setplus29
0 / 0 / 0
Регистрация: 07.09.2013
Сообщений: 4
07.09.2013, 18:33  [ТС] 8
ёмаё...зачем так сложно?))Тавм всего строчек 9 получится)
0
fanatdebian
Z3JheSBoYXQ=
339 / 234 / 83
Регистрация: 08.07.2012
Сообщений: 577
07.09.2013, 18:34 9
Пример приведен, чтобы показать как можно анализировать ввод для новичка, применимо к условиям твоей задачи.
Просто использовать scanf или fscanf, может каждый, но! т.к. ты начинающий, тебе следует, имхо, посмотреть на один из возможностей анализа полученного от пользователя.

В примере, как ты видишь, можно добавить неограниченное количество условий, какие тебе нужны для получения нужного результата и решения задачи.
Успехов.
0
web_holostyak
13 / 1 / 0
Регистрация: 05.09.2013
Сообщений: 24
08.09.2013, 00:58 10
Setplus29, что бы люди не писали сложностей, напиши Тему, по которой это задание и темы, что были ранее.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
08.09.2013, 00:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2013, 00:58

Разрешить ввод только пятизначных чисел
Как мне с помощью If сделать так, чтобы пользователь вводил только пятизначные числа, то есть если...

Предусмотрите ввод только отрицательных чисел
программа вывода на экран целых положительных чисел #include &lt;stdio.h&gt; #include &lt;conio.h&gt; int...

Ввести массив целых чисел. Признаком конца ввода массива является ввод четырех чисел, дающих в среднем арифметическом 10
Ввести массив целых чисел, количество элементов которого заранее не известно. Признаком конца ввода...


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

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

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