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

Найти фамилии и адреса людей,чей телефон начинается с цифры 3 - C++

Восстановить пароль Регистрация
 
PointM
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 25
03.07.2012, 14:36     Найти фамилии и адреса людей,чей телефон начинается с цифры 3 #1
Здравствуйте! Подскажите как реализовать эту задачу?!
Известны фамилии,адреса и телефоны 25-ти человек,Найти фамилии и адреса людей,чей телефон начинается с цифры 3.
Расмотреть два случая :
а)телефон задан в виде семизначного числа.
б)телефон задан в виде ,аналогичном следующему:268-50-59
Microsoft Visual C++ 2008
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
#include <iostream>
#include <string.h>
using namespace std;
struct Man
{
    char F[16];
    char addres[32];
    int inumber;
    char chnumber[10];
};
int main()
{
    Man mn[5] = {{"Sidorov","g. Moskva, d. 20. kv. 30", 3, ""},
    {"Sidorov1","g. Moskva, d. 21. kv. 30", 0, "2237689"},
    {"Sidorov2","g. Moskva, d. 22. kv. 30", 0, "326-78-95"},
    {"Sidorov3","g. Moskva, d. 23. kv. 30", 3224565, ""},
    {"Sidorov4","g. Moskva, d. 24. kv. 30", 0, "294-78-90"}};
 
    for(int i = 0; i < 5; i++)
    {
        if((mn[i].inumber==3)&&(strcmp(mn[i].chnumber,"3")==0))
        {
            cout <<mn[i].F<< endl;
        }
    }
    system("pause");
    return 0;
}
не понимаю, как в 21 строчке задать условие,чтобы телефон начинался с цифры 3
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2012, 14:36     Найти фамилии и адреса людей,чей телефон начинается с цифры 3
Посмотрите здесь:

C++ Ввести массив записей, который содержит фамилии сотрудников и адреса. Записи упорядочить по адресам.
C++ Найти телефон сотрудника по фамилии и инициалах (работа с файлами С++)
Дано двузначное число. Определить: начинается ли оно с четной цифры C++
Найти К – количество элементов, чей модуль превышает величину max+min/2 C++
C++ Удалить из массива тех абонентов, телефон которых начинается с цифры 3
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Varlock
365 / 68 / 2
Регистрация: 25.09.2008
Сообщений: 402
03.07.2012, 14:59     Найти фамилии и адреса людей,чей телефон начинается с цифры 3 #2
если телефон может быть только семизначным, то
там где телефон записан в переменную типа int, раздели её на 1.000.000 без остатка, и результат сравнивай с 3. (я на С++ к сожалению очень давно не писал, так что точно функцию не вспомню... если не найдёшь, то дели на 1.000.000 с остатком(вроде функция mod), остаток вычитай а затем снова дели на 1.000.000 или сравнивай сразу с 3.000.000)
там где телефон записан в виде char chnumber[10];, разве ты не можешь обратиться при проверке к chnumber как к массиву и взять только первый символ? т.е.:
mn[i].chnumber[0] == 3 (попробуй так, т.к. я совершенно непомню, как С++ на это реагирует... а все те среды, в которых я счас программирую в большинстве своём отреагировали бы положительно если так не работает, то можно создать ещё одну переменную типа char и перед ифом копировать в неё первую "букву" номера... строковые функции С++ это насколько я помню позволяют...)
PointM
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 25
03.07.2012, 18:44  [ТС]     Найти фамилии и адреса людей,чей телефон начинается с цифры 3 #3
Как-то всё равно немного не поняла с mn.inumber, может есть какой-то более удобный способ без mod?
C++
1
2
3
4
5
6
for(int i = 0; i < 5; i++)
    {
        if([B](mn[i].inumber==3) ||[/B] (mn[i].chnumber[0]=='3'))
        {
            cout <<mn[i].F<< endl;
        }
без выделенного нормально работает,т.е. с mn[i].chnumber[0]=='3' всё отлично, а вот как задать условие для mn.inumber непонятно
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
03.07.2012, 19:06     Найти фамилии и адреса людей,чей телефон начинается с цифры 3 #4
C++
1
2
3
4
5
6
7
8
#include <string>
 
////////////////////////////////////
 
if (std::to_string((long long)mn[i].inumber).c_str()[0] == '3' || (mn[i].chnumber[0]=='3'))
{
    cout <<mn[i].F<< endl;
}
PointM
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 25
03.07.2012, 19:13  [ТС]     Найти фамилии и адреса людей,чей телефон начинается с цифры 3 #5
Цитата Сообщение от Kastaneda Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
#include <string>
 
////////////////////////////////////
 
if (std::to_string((long long)mn[i].inumber).c_str()[0] == '3' || (mn[i].chnumber[0]=='3'))
{
    cout <<mn[i].F<< endl;
}
А long long - это что? и зачем?)
Yandex
Объявления
03.07.2012, 19:13     Найти фамилии и адреса людей,чей телефон начинается с цифры 3
Ответ Создать тему
Опции темы

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