[guote]Создать структуру телефон, которая содержит информацию о мобильных телефонах, продаваемых магазином: производитель, модель, цвет, полифония, наличие фото-видеокамеры и т. п. Создать массив таких структур и заполнить его. Вывести на экран все телефоны, имеющие фотокамеру. Все действия со структурой производить с помощью указателя на нее, напрямую к полям структуры обращаться нельзя. (использовать операции с файлами Вот прога:
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>
#include <string>
#include <fstream>
using namespace std;
#define NUMBER_OF_DIGITS 16
void _uitoa(unsigned int value, char* string, unsigned char radix)
{
unsigned char index, i;
index = NUMBER_OF_DIGITS;
i = 0;
do {
string[--index] = '0' + (value % radix);
if ( string[index] > '9') string[index] += 'A' - '9' - 1;
value /= radix;
} while (value != 0);
do {
string[i++] = string[index++];
} while ( index < NUMBER_OF_DIGITS );
string[i] = 0;
}
void _itoa(int value, char* string, unsigned char radix)
{
if (value < 0 && radix == 10) {
*string++ = '-';
value = -value;
}
_uitoa(value, string, radix);
}
struct mobil
{
char proizvoditel[50];
char model[50];
char color[50];
int polifoni;
int camera;
};
int main(int argc, char* argv[])
{
fstream file;
file.open("./out",ios::out);
const int col=5;
mobil mag_mobil[col];
mobil *m;
if(file.is_open())
{
for(m=mag_mobil;m<mag_mobil+col;m++)
{
cout << "Введите производителя\n";
cin >> m -> proizvoditel;
file.write(m->proizvoditel,50);
cout << "\nВведите модель\n";
cin >> m -> model;
file.write(m->model,50);
cout << "\nВведите цвет\n";
cin >> m -> color;
file.write(m->color,50);
cout << "\nНаличие полифонии (1 - да; 2 - нет\n";
cin >> m -> polifoni;
char buf;
_itoa(m->polifoni,&buf,10);
file.write(&buf,1);
cout << "\nЕсть ли в наличии фото камера(1-yes or 0-no)\n";
cin >> m -> camera;
_itoa(m->camera,&buf,10);
file.write(&buf,1);
}
file.close();
}
cout<<"\nВведите 1 чтобы вывести информацию о телефонах с камерой или 0 чтобы выйти\n";
int s;
cin>>s;
switch(s)
{
case(1):
file.open("./in",ios::in);
if(file.is_open())
{
char c, temp[10];
int fsort, fnal;
for(m=mag_mobil;m<mag_mobil+col;m++)
{
file.seekg(100,ios::cur);
file>>c;
fsort=atoi(&c);
if(fsort==s&&fnal==1)
{
file.seekg(-22,ios::cur);
long t1=file.tellg();
file.read(temp,10);
cout<<temp<<"\t";
long t2=file.tellg();
file.seekg((10-(t2-t1)),ios::cur);
t1=file.tellg();
file.read(temp,10);
cout<<temp<<"\n";
t2=file.tellg();
file.seekg((10-(t2-t1)+2),ios::cur);
}
}
file.close();
}
case(0):
break;
}
return 0;
}