| 
| 
 | Вопрос # 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. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |