Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C] Проверка на содержание буквы в строке чисел 
V
    Опции темы
logilog
Дата 24.10.2007, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 23.10.2007

Репутация: нет
Всего: нет



OS Linux

как проверить строку чисел на содержание букв?

Код

               /* Проверка строки чисел  на содержание отрицательных чисел и букв*/
#include<stdio.h>
int main()
{
    int a, b, c, d;
    printf("Задайте 4 числа");
    scanf("%d %d %d %d",a,b,c,d);
  //Проверка  на положительное число
    if (a<=0||b<=0||c<=0||d<=0) 
        printf("Все числа должны быть больше нуля");
    // Проверка на букву
    if (????? есть бкува в строке ???)
        printf("Вы ввели букву, а не число");
}


спасибо


PM MAIL   Вверх
Walker
Дата 24.10.2007, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 363
Регистрация: 23.10.2006

Репутация: 1
Всего: 16



Доброго времени суток!

Если предполагается, что каждое вводимое значение состоит из одного символа, то вполне можно обойтись
Код

'a' <= a && a <= 'z'  || 'A' <= a && a <= 'Z'

и т. д.
Если же в несколько символов, то предлагаю использовать спецификацию:
scanf("%s", a); вместо scanf("%d", &a);
и далее обрабатывать полученую строку по этим же условиям.


--------------------
"От вчерашних побед остаётся усталость, если завтрашний день не сулит ничего..."
PM MAIL   Вверх
Oleg_Ci
Дата 24.10.2007, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

Репутация: 25
Всего: 30



Наверно имеется ввиду проверка на ввод коректных симолов, можно так проверить:
scanf возвращает отрицательное значение при ошибке чтения, а при правильном прочтении возвращает количество считанных элементов.
Код

#include<stdio.h>

int main(){

    int a, b, c, d;

    while(1){
        puts("Введите 4 числа:");
        if( scanf("%d %d %d %d", &a, &b, &c, &d) == 4 ) break;
        printf("Введённый символ -\"%c\" не есть число !!!\n", getchar());
        fflush(stdin);
    }

    getchar(); // пауза
    return 0;
}
Код

scanf("%d %d %d %d",a,b,c,d); //<< здесь у тебя ошибка

PM MAIL   Вверх
Optimus
Дата 24.10.2007, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 186
Регистрация: 1.9.2007

Репутация: 9
Всего: 14



Цитата(logilog @  24.10.2007,  11:32 Найти цитируемый пост)
как проверить строку чисел на содержание букв?

где у вас строка чисел ?

если я правильно понял, то должно быть так
Код

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

void main()
{

  char number [10];
  int num;
  int i;
  int isNumber = 1;

  printf("Задайте число");
  scanf("%s", number);

  for (i = 0; number[i] != '\0'; ++i)
    // проверяем если строка состоит только из цифр
    if (number[i] < '0' || number[i] > '9')
    {
      printf("Вы ввели букву");

      isNumber = 0;
    }

  if (isNumber == 1)
  {
    num = atoi(number); // конвертируем строку в int
    printf("num = %d", num);
  }


  getch();
}

пример для одного числа
--------------------
"постановка задачи наполовину решает саму задачу"
PM MAIL   Вверх
logilog
Дата 24.10.2007, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 23.10.2007

Репутация: нет
Всего: нет



спасибо за помощь!!
ошибку в scanf()  учел
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0673 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.