
Добавил:
FuwaFuwa
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:2.5 / main
.cpp#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <string.h>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
struct Magnit
{
char form[32];
double vospr;
};
FILE *fptr;
int choice;
Magnit mag;
int main(int argc, char** argv) {
setlocale(0,"");
cout<<"\nsizeof int="<<sizeof(int);
cout<<"\nsizeof double="<<sizeof(double);
cout<<"\nsizeof Metall="<<sizeof(Magnit);
fptr=fopen("mag.db ", "wb+");
if (fptr==0) { printf("\nError .... open file");getch(); return 1;}
fseek(fptr, 0, SEEK_END);
int n = ftell(fptr) / sizeof(Magnit);
Magnit *magnitArray = new Magnit[n];
while(1)
{
printf("\nEnter code of operation");
printf("\n1 - Add \n2 - Output All\n3 - vospr >=\n4 - vospr <= \n5 Sort BD \n6 - End\n");
choice=getch(); /////scanf("%d",&choice);
switch(choice)
{
case '1':
cout<<"form="; cin>> mag.form;
cout<<"vospr="; cin>> mag.vospr;
fseek(fptr, 0, SEEK_END);
fwrite(&mag, sizeof(Magnit),1, fptr);
break;
case '2':
fseek(fptr, 0, SEEK_SET);
while(!feof(fptr))
{
int ret=fread(&mag, sizeof(Magnit),1, fptr);
if (ret!=1) break;
printf("\n%20s %7.3lf", mag.form, mag.vospr);
}
break;
case '3':
double v1;
cout<<"vospr1="; cin>> v1;
fseek(fptr, 0, SEEK_SET);
while(!feof(fptr))
{
int ret=fread(&mag, sizeof(Magnit),1, fptr);
if (ret!=1) break;
if (mag.vospr>=v1 )
printf("\n%20s %7.3lf", mag.form, mag.vospr);
}
break;
case '4':
double v2;
cout<<"vospr1="; cin>> v2;
fseek(fptr, 0, SEEK_SET);
while(!feof(fptr))
{
int ret=fread(&mag, sizeof(Magnit),1, fptr);
if (ret!=1) break;
if (mag.vospr<=v2 )
printf("\n%20s %7.3lf", mag.form, mag.vospr);
}
break;
case '5':
printf("\nCount DB: %d\n", n);
fseek(fptr, 0, SEEK_SET);
for (int i = 0; i < n; i++) {
fread(&magnitArray[i], sizeof(Magnit), 1, fptr);
}
for (int i = 0; i < n - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < n; j++) {
if (magnitArray[j].vospr < magnitArray[minIndex].vospr) {
minIndex = j;
}
}
Magnit temp = magnitArray[i];
magnitArray[i] = magnitArray[i+1];
magnitArray[i+1] = temp;
}
fseek(fptr, 0, SEEK_SET);
for (int i = 0; i < n; i++) {
fwrite(&magnitArray[i], sizeof(Magnit), 1, fptr);
}
delete[] magnitArray;
break;
default: goto mEnd;
} // END OF SWITCH
} // END OF WHILE
mEnd:
fclose(fptr);
return 0;
}