Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 24.03.2019
Сообщений: 14

Структура и функции

20.04.2019, 12:12. Показов 991. Ответов 5

Студворк — интернет-сервис помощи студентам
Для хранения данных о планшетных сканерах описать структуру вида:
C++
1
2
3
4
5
6
7
8
struct scan_info {
        char model[25]; // наименование модели
        int price : // цена
        double x_s1ze : // горизонтальный размер области сканирования
        double y__s1ze : // вертикальный размер области сканирования
        1nt optr : // оптическое разрешение
        int grey : // число градаций серого
    };
Написать функцию, которая записывает в бинарный файл данные о сканере из
приведенной структуры. Структура файла: в первых двух байтах размещается
значение типа int, определяющее количество сделанных в файл записей; далее
без пропусков размещаются записи о сканерах.

Написать функцию, которая извлекает из этого файла данные о сканере в структуру
типа scaninfo. Обязательный параметр — номер требуемой записи. Функция
должна возвращать нулевое значение, если чтение прошло успешно, и -1 в
противном случае.

Привести пример программы, создающей файл с данными о сканерах (данные
вводятся с клавиатуры) — 6-8 записей и выводящей на дисплей данные о запрошенной
записи.

Все необходимые данные для функций должны передаваться им в качестве параметров.
Использование глобальных переменных в функциях не допускается.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.04.2019, 12:12
Ответы с готовыми решениями:

Структура и функции
Нужно сделать так, чтобы из функции "Function_Read" значения структуры сохранялись и можно было их использовать в...

Структура в функции с++
Привет всем, кто всегда готов помочь. Подскажите пожалуйста, в чем ошибка в коде. Если надо, я могу рассказать условие задания, но я думаю,...

Структура,функции
Собственно суть: создается массив структур из 6 друзей,который надо просортировать по дате рождения(от старшего к меньшему) и вывести всех...

5
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
20.04.2019, 13:39
Цитата Сообщение от JoTae Посмотреть сообщение
в первых двух байтах размещается
значение типа int
а ничего что int чутка побольше?
0
0 / 0 / 0
Регистрация: 24.03.2019
Сообщений: 14
20.04.2019, 14:29  [ТС]
Вроде нет. Есть подобный код, но или я что-то не так ввожу или код неверный, потому что.. не работает))

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
111
112
113
114
115
#include "stdafx.h" 
#include <iostream> 
#include <stdio.h> 
#include <cctype>// для функции islower 
#include <fstream> 
using namespace std;
 
struct scan_info;//declaration on struct 
scan_info** f1(int n);//declaration of the first function 
void f2(scan_info** tmp, int n);//declaration of the second fucntion 
 
int _tmain(int argc, _TCHAR* argv[])
{
    int n;
    cout << "Enter the quantity of scanners: ";
    cin >> n;
    scan_info** tmp = f1(n);
    f2(tmp, n);
 
    system("pause");
    return 0;
}
 
struct scan_info {
    char model[25]; // наименование модели 
    int price; // цена 
    double x_size; // горизонтальный размер области сканирования 
    double y_size; // вертикальный размер области сканирования 
    int optr; // оптическое разрешение 
    int gray; // число градаций серого 
    scan_info(bool is = true) {//constructor 
        if (!is)
            return;
        cout << "Enter model of scanner: ";
        cin.get(); gets_s(model, 24);
        cout << "Enter price of scanner: ";
        cin >> price;
        cout << "Enter x_size of scanner: ";
        cin >> x_size;
        cout << "Enter y_size of scanner: ";
        cin >> y_size;
        cout << "Enter number of grayscale of scanner: ";
        cin >> gray;
    }
};
 
scan_info** f1(int n) {
    scan_info** sc1 = new scan_info*[n];
    for (int i = 0; i < n; i++) {
        cout << "scanner number " << i << endl;
        sc1[i] = new scan_info();
        cout << endl;
    }
    return sc1;
}
 
void f2(scan_info** tmp, int n) {
    fstream f;
    f.open("output.txt", ios::in | ios::out | ios::binary | ios::trunc);
    f.seekp(sizeof(long int), ios::beg);
    long int n1 = 0;//count of notes in file 
 
    for (int i = 0; i < n; i++) {//write model that starts with uppercase latter 
        if (tmp[i]->price < 200)
            continue;
        else {
            if (islower(tmp[i]->model[0]))
                continue;
            else {
                //f.write((char*)&tmp[i], sizeof(scan_info)); 
                f.write((char*)tmp[i], sizeof(scan_info)); //DEBUG 
                n1++;
            }
        }
    }
    for (int i = 0; i < n; i++) {//than write model that starts with lowcase latter 
        if (tmp[i]->price < 200)
            continue;
        else {
            if (islower(tmp[i]->model[0])) {
                //f.write((char*)&tmp[i], sizeof(scan_info)); 
                f.write((char*)tmp[i], sizeof(scan_info)); //DEBUG 
                n1++;
            }
            else
                continue;
        }
    }
    f.seekp(0, ios::beg);
    f.write((char*)&n1, sizeof(long int));//write the count of notes in file 
 
    int n2;
    cout << "Enter the number of note to find: ";
    cin >> n2;
    f.seekg(sizeof(long int) + sizeof(scan_info) * (n2 - 1), ios::beg);
 
    /*scan_info a(false);
 
    f.read((char*)&a, sizeof(scan_info));
    cout « "model: " « a.model « endl;
    cout « "price: " « a.price « endl;
    cout « "x_size: " « a.x_size « endl;
    cout « "y_size: " « a.y_size « endl;
    cout « "number: " « a.gray « endl;*/
 
    scan_info* a = new scan_info(false);
 
    f.read((char*)&a, sizeof(scan_info));
    cout << "model: " << a->model << endl;
    cout << "price: " << a->price << endl;
    cout << "x_size: " << a->x_size << endl;
    cout << "y_size: " << a->y_size << endl;
    cout << "number: " << a->gray << endl;
    f.close();
}
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
20.04.2019, 14:31
Цитата Сообщение от zayats80888 Посмотреть сообщение
а ничего что int чутка побольше?

Не по теме:

Дык задание наверно в Borland C++ под Dosbox, а методичку уже пятьдесят лет как не обновляли.

1
Just Do It!
 Аватар для XLAT
4208 / 2665 / 655
Регистрация: 23.09.2014
Сообщений: 9,061
Записей в блоге: 3
20.04.2019, 16:13
JoTae,
чуть поправил ваш код:
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
#include <iostream>
#include <stdio.h>
#include <fstream>
#include <conio.h>
 
using namespace std;
 
struct sscan_info
{   char model[25]; // наименование модели
    int    price  ; // цена
    double x_size ; // горизонтальный размер области сканирования
    double y_size ; // вертикальный размер области сканирования
    int    optr   ; // оптическое разрешение
    int    gray   ; // число градаций серого
    
    sscan_info(){}   // Просто выделяем память без инициализации.
    sscan_info(bool) //Конструктор с вводом пользователя.
    {   cout << "Enter model of scanner:  ";
        cin.get(model, 24);
        cout << "Enter price of scanner:  ";
        cin >> price;
        cout << "Enter x_size of scanner: ";
        cin >> x_size;
        cout << "Enter y_size of scanner: ";
        cin >> y_size;
        cout << "Enter number of grayscale of scanner: ";
        cin >> gray;
    }
};
 
/// Вывод инфы об объекте структуры sscan_info---------------------------------:
void show(sscan_info* a)
{   cout << "\n|-----------------------------:\n";
    cout << "model:  " << a->model  << endl;
    cout << "price:  " << a->price  << endl;
    cout << "x_size: " << a->x_size << endl;
    cout << "y_size: " << a->y_size << endl;
    cout << "number: " << a->gray   << endl;
}
 
/// Сохраняем в файл-----------------------------------------------------------:
void save(const char* _namefile, char* _buff, size_t _size)
{
    std::ofstream fout(_namefile, std::ios::binary);
    if (!fout)
    {   cout << "Fail open file!\n";
        return;
    }
 
    fout.write((const char*)_buff, _size);
    fout.close();
}
 
/// Грузим из файла------------------------------------------------------------:
bool load(const char* _name, char* _buff, int _n)
{   std::ifstream F(_name, ios::in | ios::binary);
    if(!F.is_open()) 
    {   cout << "Fail open file!\n";
        return false;
    }
    
    F.read(_buff, _n);
    F.close();
 
    return true;
}
 
int main()
{  
    sscan_info scan_info_01(true);
    save("test.bin", (char*)(&scan_info_01), sizeof(sscan_info));
    
    sscan_info scan_info_02;
    load("test.bin", (char*)(&scan_info_02), sizeof(sscan_info));
    
    show(&scan_info_02);
    
    _getch   ();
    return 0;
}
тестилось на GCC4.9.2
0
0 / 0 / 0
Регистрация: 24.03.2019
Сообщений: 14
20.04.2019, 18:40  [ТС]
Только в Вашем коде нет возможности пользователю ввести кол-во будущих записей, а затем вывести конкретную запись по введенному номеру. Попробую соединить тогда два этих кода. Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.04.2019, 18:40
Помогаю со студенческими работами здесь

Структура в функции
Помогите разобраться, буду очень благодарен. Цитирую вопрос с лабораторной: У C++ забезпечується можливість передавати як структури...

Структура и функции
задание: 1) Напишите функцию, принимающую структуру box по значению и отображающую все ее члены. 2) Напишите функцию,...

Структура современной связи как структура системы власти - как структура государственного управления
Структура современной связи всё больше становится структурой государственного управления, в особенности финансового государственного...

Общая структура функции на С++
Как выглядит общая структура функции на С++?

Структура функции. Квадратное уравнение.
Подскажите пожалуйста как написать функцию решения квадратного уравнение с помощью структуры функции. Я просто понять не могу какие поля...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru