Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
10 / 11 / 7
Регистрация: 11.05.2016
Сообщений: 113
1

Сравнение составного структуры с integer

17.05.2016, 21:20. Показов 1121. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Возник вот какой вопрос. У меня задана структура:
C++
1
2
3
4
5
6
struct studinomer {
    struct {
        char F[31], I[31], O[31];
    } FIO;
    int nom;
};
Далее мне надо проверить, есть ли в номере(nom) номер, начинающийся с 361, 362 или 273 и это НЕ РАБОТАЕТ т.е. вообще никак не воспринимается, не нашел ничего по данной теме.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
studinomer Stud;
    
    int kol = 0, nr = 1;
    while (nr) {
        nr = fread(&Stud, sizeof(Stud), 1, fb); // считывание из двоичного файла, который я уже заполнил
        
        if (nr > 0)
            printf("Номер телефона = %d \n", Stud.nom); // удостоверился в том, что все правильно считывается и номер в данный момент(из файла я ввожу) 3618327
 
            if (((Stud.nom) == 361)) || ((Stud.nom) == 362) || ((Stud.nom) == 273))){ //сейчас мог не так скобки расположить, но суть не в этом :)
                printf("Найден сотрудник с таким номером телефона %s %s %s %s\n", Stud.FIO.I, Stud.FIO.O, Stud.FIO.F, Stud.nom);
                kol++;
            }
    }
    if (kol == 0)
        printf("Данные, соответствующие запросу,не найдены\n");
    else
        printf("Всего найдено: %d\n", kol);
Заранее спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2016, 21:20
Ответы с готовыми решениями:

Сравнение числа типа Integer с методом возвращающий Integer или остановка цикла for
Здравствуйте, пытаюсь написать свой метод сортировки по алфавиту, и при написании куска кода...

Сравнение Integer
Почему данный код выводит false true: public class A{ public static void main(String args) ...

Сравнение указателя и integer
Здравствуйте. Есть такая вот программа: int main(int argc, char *argv, char *envp){ for(int...

Сравнение, преобразование Boolean и Integer
Всем привет. Недавно эксперементировал и нашел интересную вещь. Стояла задача сделать 2 функции,...

10
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
17.05.2016, 21:25 2
Тебе нужно "начинающийся с", а ты проверяешь равенство - естественно не находит.
0
10 / 11 / 7
Регистрация: 11.05.2016
Сообщений: 113
17.05.2016, 21:27  [ТС] 3
nmcf, просто если ввожу 361, то вообще компилятор с критической ошибкой выкидывает.
А как только начало сравнить?
0
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
17.05.2016, 21:30 4
В printf() последний ключ %d, а не %s.
0
10 / 11 / 7
Регистрация: 11.05.2016
Сообщений: 113
17.05.2016, 21:37  [ТС] 5
nmcf, пропустил)) тогда будет работать, даже если после 361 есть другие числа?
0
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
17.05.2016, 21:41 6
Цитата Сообщение от fire_Rising Посмотреть сообщение
тогда будет работать, даже если после 361 есть другие числа?
Нет. Я тебе про это сразу и написал.
0
10 / 11 / 7
Регистрация: 11.05.2016
Сообщений: 113
17.05.2016, 21:44  [ТС] 7
nmcf, задать nom как char и работать с ним как со строкой? То есть я могу задать еще одну строку-массив из этих трех чисел и сравнить ее с Stud.nom с помощью strcmp. Пойдет?
0
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
17.05.2016, 21:49 8
Лучший ответ Сообщение было отмечено fire_Rising как решение

Решение

Ну можно как строку задать или преобразовывать предварительно:
C++
1
string n3 = to_string(Stud.nom).substr(0, 3);
Дальше n3 сравниваешь как строку.
C++
1
n3 == "361"
1
10 / 11 / 7
Регистрация: 11.05.2016
Сообщений: 113
17.05.2016, 22:04  [ТС] 9
nmcf, хмм, я вставил все равно не видит, если номер не из одного "361" состоит

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
studinomer Stud;
int kol = 0, nr = 1;
    string n3 = to_string(Stud.nom).substr(0, 3);
    while (nr) {
 
        nr = fread(&Stud, sizeof(Stud), 1, fb);
 
        if (nr > 0) {
 
            if (n3 == "361") {
                printf("Найден сотрудник с таким номером телефона %s %s %s %d\n", Stud.FIO.I, Stud.FIO.O, Stud.FIO.F, Stud.nom);
                kol++;
            }
        }
    }
        if (kol == 0)
            printf("Данные, соответствующие запросу,не найдены\n");
        else
            printf("Всего найдено: %d\n", kol);
Хотя он и если просто "361" ввести не видит
0
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
17.05.2016, 22:39 10
3-я строка после fread() должна быть.
0
10 / 11 / 7
Регистрация: 11.05.2016
Сообщений: 113
17.05.2016, 22:50  [ТС] 11
nmcf, спасибо за помощь! сорри за то, что туплю. новичек)
правильно, как я мог присваивать, если еще не считал из файла)))
0
17.05.2016, 22:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.05.2016, 22:50
Помогаю со студенческими работами здесь

Сравнение чисел с переменной типа Integer
Привет! Помогите решить небольшую проблему Нужно сравнить 2 числа с переменной типа integer но у...

Сравнение переменной со случайным числом. Integer и Random не совместимы
Дана задача: "Программа вводит число А с клавиатуры и генерирует число В как целое случайное число...

Нельзя преобразовать тип function(a: integer;b: integer):integer к real
unit matr1; interface type matr2=array of real; matr3=array of real; procedure sum...

Нельзя преобразовать тип function(z: integer;w: integer;e: integer): real к real
program pract18; uses crt; var x,a,i,k:integer; y:real; function prm1 (z,w,e:integer):real; ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru