|
Вопрос # 6 068/ вопрос открыт / |
|
Доброго времени суток! Пара вопросов по си:
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™ (статус: Доктор наук), 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™ (статус: Доктор наук), 12 апреля 2012, 09:25 [#3]:
А не проще ли разрешить вводить всё, а после ввода проверять на соответствие критериям, а?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Эдик (статус: Посетитель), 12 апреля 2012, 12:35 [#4]:
Я неправильно выразился...Да "юзернейм" введёт это, но после проверки выдаст сообщение (юзерфрендли же) что введено не то и попросит переввести.
|
|
min@y™ (статус: Доктор наук), 12 апреля 2012, 12:56 [#5]:
Цитата (Эдик):
Я неправильно выразился...
Ну, так переформулируй задачу.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Эдик (статус: Посетитель), 12 апреля 2012, 13:29 [#6]:
пользователь вводит "имя" "фамилия" "номер"(всё задано через char в глобально описанной структуре), затем функция должна проверять не ввёл ли нерадивый пользователь "ничего",нет ли цифр\символов в "имени" и "фамилии" и нет ли букв,символов,правильное ли количество цифр(11 либо 12 начиная с плюса(а плюс идёт как символ)) в "номере"
|
|
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™ (статус: Доктор наук), 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™ (статус: Доктор наук), 12 апреля 2012, 16:03 [#12]:
А ты так не делай. Делай отдельно, после ввода проверяй.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|