Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.88
КПИшник
 Аватар для КПИшник
0 / 0 / 0
Регистрация: 10.10.2008
Сообщений: 8
#1

Проверка строки на наличии букв - C++

10.10.2008, 19:16. Просмотров 2069. Ответов 4
Метки нет (Все метки)

Вообщем задача состоит в том, что мне нада сделать структуру паспорта, вести имя, фамилию и.т.д., это я сделал, но вот появилась проблема...как мне проверить при вводе даты(datagod,datames,dataden) нет ли в ней букв. Для примера что бы не было вот такого "20д03". Я бы хотел при вводе либо сделать так что бы ни какие кнопки кроме цыфр не работали, но я так не умею. Или подскажите как сделать проверку на правильность ввода.
Вот сам код
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <iostream>
 
struct pasport 
{
    char imya[100];
    char fam[100];
    int datagod;
    int datames;
    int dataden;
    char vidal[100];
};
 
void main()
{
    int kolichestvo;
    int i;
    printf("vedite koli4estvo pasportov ");
    scanf("%d", &kolichestvo);
    if (kolichestvo<=0) 
    {
        while (kolichestvo<=0)
        {
        printf("vi veli kolichestvo <= 0\n");
        printf("vedite koli4estvo pasportov ewe raz\n");
        scanf("%d", &kolichestvo);
        }
    }
      pasport list[30];
      for (i=1;i<=kolichestvo;i++)
      {
          std::cout<<"\n imya: ";
          std::cin>>list[i].imya;
          std::cout<<"\n fam: ";
          std::cin>>list[i].fam;
          std::cout<<"\n god: ";
          std::cin>>list[i].datagod;
          if ((list[i].datagod>=2010)||(list[i].datagod<=0))
          {
            while ((list[i].datagod>=2010)||(list[i].datagod<=0))
              {
                printf("vedite opyat ");
                std::cin>>list[i].datagod;
              } 
          } 
          std::cout<<"\n mesyac: ";
          std::cin>>list[i].datames;
          if ((list[i].datames>=13)||(list[i].datames<=0))
          {
              while ((list[i].datames>=13)||(list[i].datames<=0))
              {
                printf("vedite opyat ");
                std::cin>>list[i].datames;
              }
          }
          std::cout<<"\n den: ";
          std::cin>>list[i].dataden;
          if ((list[i].dataden>=31)||(list[i].dataden<=0))
          {
              while ((list[i].dataden>31)||(list[i].dataden<=0))
              {
                printf("vedite opyat ");
                std::cin>>list[i].dataden;
              }
          }
          std::cout<<"\n vidal: ";
          std::cin>>list[i].vidal;
      }
  putchar(218);
  for (int i=1;i<=70;i++)
    putchar(196);
  putchar(191);
  printf("\n");
  putchar(179);
  printf("imya\t\t     ");
  putchar(179);
  printf("familiya\t\t  ");
   putchar(179);
  printf("god\t\t    ");
  putchar(179);
  printf("vidal     ");
  putchar(179);
  printf("\n");
  putchar(179);
  for (int i=1;i<=20;i++)
    putchar(196);
  putchar(179);
  for (int i=1;i<=20;i++)
    putchar(196);
  putchar(179);
  for (int i=1;i<=17;i++)
    putchar(196);
  putchar(179);
  for (int i=1;i<=10;i++)
    putchar(196);
  putchar(179);
  printf("\n");
      for (i=1;i<=kolichestvo;i++)
      {
            std::cout<<"|"<< list[i].imya<<"\t\t\     |"<<list[i].fam<<"\t\t\  |"<<list[i].datagod<<"."<<list[i].datames<<"."<<list[i].dataden<<"\t    |"<<list[i].vidal<<"    |\n";
            putchar(179);
            for (int i=1;i<=70;i++)
                putchar(196);
            putchar(179);
            printf("\n");
      }
        getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2008, 19:16     Проверка строки на наличии букв
Посмотрите здесь:

Проверка на ввод букв C++
C++ Проверка строчьки на наличие букв
Дана строка с набором случайных символов, при вводе 10 букв первые 5 букв становятся большими , вторые 5 букв маленькими C++
Проверка строки C++
Длина строки, проверка цифр/букв C++
Проверка строчных букв на упорядоченность по алфавиту C++
Проверка на ввод только нескольких букв C++
Проверка регистра букв C++
Можете объяснить, как работает следующая проверка (на ввод букв)? C++
C++ Проверка на ввод букв
C++ Проверка ввода только букв
Try/catch. Проверка на ввод букв в int C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tengel
 Аватар для Tengel
2 / 2 / 0
Регистрация: 08.10.2008
Сообщений: 17
10.10.2008, 20:25     Проверка строки на наличии букв #2
во первых, после
C++
1
2
3
4
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <iostream>
перед main набери
C++
1
using namespace std;
тогда тебе не будет нужно писать
C++
1
2
std::cin>>...
std::cout<<....
а по поводу вопроса, тогда просто бери и проверяй каждый вводящийся символ, если ето буква, тогдазаново вводить .....
КПИшник
 Аватар для КПИшник
0 / 0 / 0
Регистрация: 10.10.2008
Сообщений: 8
10.10.2008, 22:19  [ТС]     Проверка строки на наличии букв #3
тоесть проверять как масив?
C++
1
2
3
4
5
6
7
8
9
k=0;
while k!=1
{
std::cin>>list[i].datagod;
for (int j=1;j<=4;j++)
  if (list[i].datagod[j]<'0')||(list[i].datagod[j]>'9')
    printf("povtorite vvod");
  else k=1
}
так что ли?

Добавлено через 2 минуты 12 секунд
PS что то я свои посты не могу редактировать....
dioxidin
 Аватар для dioxidin
130 / 97 / 1
Регистрация: 21.11.2007
Сообщений: 544
14.10.2008, 11:10     Проверка строки на наличии букв #4
Есть способ проще..
Код
char Str1[50],Str2[50];
if (sscanf(Str1," %*[^a-zA-Z]%[a-zA-Z]",Str2) == 1){
<Операторы обработки ошибки>
}
Пояснения: "%*[^a-zA-Z]" читает все символы кроме букв. Как только попадается буква, то чтение прекращается. "*" означает, что считанное никуда не сохраняется. Следующее поле уже позволяет считать символьное содержимое. Возможно после одной группы букв будут еще, тогда просто надо добавить поле считывания "всего кроме букв" и снова буквы.
Если букв не будет, то выдаст 0. 0 дает поле "%*[^a-zA-Z]". Когда эта функция не находит вообще ничего совпадающего с указанным форматом, она возвращает EOF (EOF == -1).

Есть способ получать блоки текста между указываемыми разделителями. Если интересует приведу (функция strtok() - читай в MSDN).
КПИшник
 Аватар для КПИшник
0 / 0 / 0
Регистрация: 10.10.2008
Сообщений: 8
14.10.2008, 19:58  [ТС]     Проверка строки на наличии букв #5
все спасибо, вопрос не актуален
Yandex
Объявления
14.10.2008, 19:58     Проверка строки на наличии букв
Ответ Создать тему
Опции темы

Текущее время: 22:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru