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

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

Войти
Регистрация
Восстановить пароль
 
PointM
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 25
#1

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

03.07.2012, 14:36. Просмотров 1023. Ответов 4
Метки нет (Все метки)

Здравствуйте! Подскажите как реализовать эту задачу?!
Известны фамилии,адреса и телефоны 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
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2012, 14:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти фамилии и адреса людей,чей телефон начинается с цифры 3 (C++):

Удалить из массива тех абонентов, телефон которых начинается с цифры 3 - C++
Сформировать массив записей, описывающих следующую таблицу: --------------------------------------------------------------- Фамилия ...

Найти в записной книжке телефон по фамилии - C++
5 В записной книжке указаны фамилии и номера телефонов 30-ти человек. Составить программу которая определяет, есть ли в записной книжке...

Найти телефон сотрудника по фамилии и инициалах (работа с файлами С++) - C++
Задан файл, который содержит номера телефонов сотрудников: указывается фамилия и инициалы, номер телефона. Найти телефон сотрудника по его...

Считать данные с файла и вывести фамилии студентов, проживающих дома и имеют домашний телефон - C++
Массив структур местит информацию о 30 студентов: фамилия; имя; место проживания (общежитие или дома); номер телефона (если он есть)....

Создать массив структур; убрать фамилии абонентов, адреса которых изменились - C++
Ребят, прошу, помогите дорешать задачу. Суть задачи: Создать массив структур каждый из которых складывается из следующих елементов: фамилии...

Дано двузначное число. Определить: начинается ли оно с четной цифры - C++
Дано двузначное число. Определить: начинается ли оно с четной цифры

4
Varlock
365 / 68 / 2
Регистрация: 25.09.2008
Сообщений: 402
03.07.2012, 14:59 #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 и перед ифом копировать в неё первую "букву" номера... строковые функции С++ это насколько я помню позволяют...)
1
PointM
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 25
03.07.2012, 18:44  [ТС] #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 непонятно
0
Kastaneda
Форумчанин
Эксперт С++
4676 / 2880 / 234
Регистрация: 12.12.2009
Сообщений: 7,317
Записей в блоге: 2
Завершенные тесты: 1
03.07.2012, 19:06 #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;
}
0
PointM
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 25
03.07.2012, 19:13  [ТС] #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 - это что? и зачем?)
0
03.07.2012, 19:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2012, 19:13
Привет! Вот еще темы с ответами:

Ввести массив записей, который содержит фамилии сотрудников и адреса. Записи упорядочить по адресам. - C++
Очень нужно написать задачу!Пожалуйста помогите):) Ввести массив записей, который содержит фамилии сотрудников и адреса. Записи...

Найти работников чей стаж работы превышает заданное значение - C++
Описать структуру с именем WORKER, содержащую следующие ноля: - фамилия и инициалы работника; - название занимаемой должности; - год...

Найти К – количество элементов, чей модуль превышает величину max+min/2 - C++
Ввести двумерный массив А N*M,вывести его.Найти К – количество элементов, чей модуль превышает величину max+min/2. Если K превышает...

Работа с файлами: найти сотрудников, чей возраст старше 45 или стаж превышает 20 лет - C++
работа с файлами поместить в файл n записей, содержащих сведения о сотрудниках: ФИО, год рождения, стаж работы. Найти сотрудников, чей...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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