Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11679
Последний выпуск: 19.06.2015

Структура PRICE

62K
11 апреля 2016 года
Nas_96
19 / / 13.03.2016
Подготовьте массив указателей на PRICE на 50 элементов.

Считайте все записи из файла "8.dat" .

Для чтения каждой отдельной записи осуществите динамический захват памяти.

Соответствующий адрес храните в массиве указателей.

Выполните сортировку данных по номенклатурному номеру - причем сортировать потребуется только указатели в массиве.

Выведите отсортированнный массив.

это моя попытка, но программа не компилирует хорошо.
Код:
#include <iostream>
#include <stdio.h>
#include <iomanip>
#define strlen 20
using namespace std;
 
struct price
{
    int number;
    char name[strlen];
    int cost;
    int quantity;
};
 
struct price** pm;
struct price* tmp;
 
int main()
{
    int size, i;
    FILE* file;
 
    if((file = fopen("D:\8.dat", "rb+")) == NULL) { printf("Error opening file.n"); exit(1);  }
    fread(&size, 4, 1, file);
 
    pm = new struct price*[size];
    pm[0] = new struct price[size];
 
    for (i=0; i<size; i++)  { pm[i] = pm[0] + i;  }
 
    for (i=0; i<size; i++)
    {
        fread(pm[0]+i, sizeof(struct price), 1, file);
    }
    fclose(file);
 
    for (i=0; i<size; i++)
    {
        for (int j=0; j<size-i-1; j++)
        {
            if ((pm[j]->number) > (pm[j+1]->number))  {
                tmp = pm[j];
                pm[j] = pm[j+1];
                pm[j+1] = tmp;
            }
        }
    }
    for (i=0; i<size; i++)
    {
        cout << "By number: " << pm[i]->number << endl;
        cout << "------------------------" << endl;
    }
 
    delete [] pm[0];
    delete[] pm;
 
    system("PAUSE");
    return EXIT_SUCCESS;
}
Это код файла "8.dat":
Код:
#include <iostream>
#include <stdio.h>
#include <iomanip>
#define strlen 20
using namespace std;
 
typedef struct
{
    int number;
    char name[strlen];
    int cost;
    int quantity;
}  PRICE, *LPPRICE;
 
int main(int argc, char** argv)
{
    int size;
    cout << "Enter number of structures: ";
    cin >> size;
    cout << "-----------------------------------n" << endl;
 
    LPPRICE pm = new PRICE[size];
    int index;
    FILE *file;
 
    if((file = fopen("D:\8.dat", "wb")) == NULL) { printf("Error opening file.n"); exit(1);  }
 
    for (index=0; index<size; index++)
    {
        cin.ignore();
        cout << "Product: "; gets(pm[index].name);
        cout << "Number of orden: "; cin >> pm[index].number;
        cout << "Product cost: "; cin >> pm[index].cost;
        cout << "Quantity in stock: "; cin >> pm[index].quantity;
        cout << "-----------------------------------n" << endl;
        fwrite(&pm[index], sizeof(PRICE), 1, file);
    }
    fclose(file);
    delete []pm;
    system("PAUSE");
    return EXIT_SUCCESS;
}
Помогите пожалуйста.
1.9K
12 апреля 2016 года
Kuzya
183 / / 19.03.2008
чёт не сходится, в файле 8.dat должны быть данные, а не код cpp

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог