#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;
}
Структура PRICE
Считайте все записи из файла "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;
}
#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;
}
чёт не сходится, в файле 8.dat должны быть данные, а не код cpp