Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 068

Раздел: C++
/ вопрос открыт /

Доброго времени суток! Пара вопросов по си:
1)Допустим мне нужно чтобы пользователь ввёл в строку 11 цифр либо 12 символов,первый из которых - "+".Задаётся это дело char'ом т.к. пользователь может ввести любую лабуду какую захочет.Каким куском кода можно без isdigit'а заставить его ввести те самые 11 либо 12 символов( так и будет вводить пока под один из двух форматов не введёт)
2)Можно ли в операторе switch объявлять функции?
switch (a)
{
case 1: test; /// где test и есть функция,которая объявляется при вводе единицы
break;

Эдик Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Эдик (статус: Посетитель)
Вопрос отправлен: 12 апреля 2012, 06:23
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 12; последнее сообщение — 12 апреля 2012, 16:03; участников в обсуждении: 2.
min@y™

min@y™ (статус: Доктор наук), 12 апреля 2012, 08:15 [#1]:

Во-первых, не надо задавать более одного вопроса на странице. Если вопросов 2 и более, создавай отдельные темы.

Теперь по делу.
1. Какая среда программирования? Приложение консольное или оконное?
2. Да, можно, конечно. Только Си - это не Паскаль:
switch (a)
{
  case 1: 
    test(); // скобки ставить обязательно!
  break;
}
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Эдик

Эдик (статус: Посетитель), 12 апреля 2012, 09:18 [#2]:

О 1м пункте:
среда dev c++ консоль;
Вводимые данные относятся к глобальной структуре:
вводятся имя, фамилия, номер.С именем и фамилией нужно запретить ввод цифр и символов,а с номером то,что я описал в 1м пункте.
из библиотеке String.h со строками я не нашёл подходящей команды и всё же просьба указать способ без isdigit'a
min@y™

min@y™ (статус: Доктор наук), 12 апреля 2012, 09:25 [#3]:

А не проще ли разрешить вводить всё, а после ввода проверять на соответствие критериям, а?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Эдик

Эдик (статус: Посетитель), 12 апреля 2012, 12:35 [#4]:

Я неправильно выразился...Да "юзернейм" введёт это, но после проверки выдаст сообщение (юзерфрендли же) что введено не то и попросит переввести.
min@y™

min@y™ (статус: Доктор наук), 12 апреля 2012, 12:56 [#5]:

Цитата (Эдик):

Я неправильно выразился...

Ну, так переформулируй задачу.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Эдик

Эдик (статус: Посетитель), 12 апреля 2012, 13:29 [#6]:

пользователь вводит "имя" "фамилия" "номер"(всё задано через char в глобально описанной структуре), затем функция должна проверять не ввёл ли нерадивый пользователь "ничего",нет ли цифр\символов в "имени" и "фамилии" и нет ли букв,символов,правильное ли количество цифр(11 либо 12 начиная с плюса(а плюс идёт как символ)) в "номере"
min@y™

min@y™ (статус: Доктор наук), 12 апреля 2012, 13:45 [#7]:

Ну и в чём проблема-то? Напиши 2 функции, одна из которых будет проверять строку на наличие символов, отличных от букв и пробелов, другая - цифр и "+" в начале (как я понял, это номер телефона).
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Эдик

Эдик (статус: Посетитель), 12 апреля 2012, 14:41 [#8]:

void new_contacts () ///ввод контактов
{
int n=1;
n=n+1;
printf("enter Name; Surname; mobile");
scanf("%s%s%s",&A[n].Name,&A[n].Surname,&A[n].mobile);
проблема в том что считывает всё сразу
Эдик

Эдик (статус: Посетитель), 12 апреля 2012, 14:42 [#9]:

а если это изменить, то будет совсем другая реализация задачи...
min@y™

min@y™ (статус: Доктор наук), 12 апреля 2012, 14:56 [#10]:

Цитата (Эдик):

проблема в том что считывает всё сразу

Ну, так после каждого считывания проверяй, что ввели, если неправильно - возвращайся на повтор.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Эдик

Эдик (статус: Посетитель), 12 апреля 2012, 15:57 [#11]:

но ведь считывание происходит 1 раз
scanf("%s%s%s",&A[n].Name,&A[n].Surname,&A[n].mobile);
в одну строку считывается и выводит по запросу тоже "имя" "фамилия" "телефон" т.е. в одной строке будет вся каша:символы пробелы цифры
min@y™

min@y™ (статус: Доктор наук), 12 апреля 2012, 16:03 [#12]:

А ты так не делай. Делай отдельно, после ввода проверяй.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:56
Выполнено за 0.03 сек.