Поиск:

Ответ в темуСоздание новой темы Создание опроса
> программа о ноутбуках на Microsoft Visual Studio 6 
:(
    Опции темы
weirdo
Дата 5.3.2008, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 16.1.2007

Репутация: нет
Всего: нет



Задача:
Для хранения данных о ноутбуках описать структуру вида:
struct NOTEBOOK {
    char model[21];    // наименование 
    struct size {       // габаритные размеры
    float х;
    float у;
    float z;
    };
    float w;    // вес
    int price;          // цена 
}
Написать функцию, которая читает данные о ноутбуках из файла note.txt (см. Задача 75) в структуру приведенного вида. Написать функцию, которая записывает содержимое структуры в конец бинарного файла. Структура бинарного файла: первые два байта (целое)  число записей в файле; далее записи в формате структуры NOTE-BOOK.
Написать программу, в которой на основе разработанных функций осуществляется чтение данных только для тех ноутбуков, частота процессора которых больше 120 МГц, и запись в бинарный файл по убыванию цены.
У меня есть код на Билдере С++...а как переделать под Microsoft Visual Studio 6?
clrscr() функция отсутствует...а что еще?
может у кого нибудь есть готовое решени подобной задачи под мою среду? 

Код

//Файл Main.cpp: Код:
#include "Functions.cpp" 

void main(void) 

  while(ShowMenu());  //показываем меню, пока пользователь не выберет пункт выхода из программы 
}

============================
Код

//Файл Functions.cpp: Код:

#include <iostream.h> 
#include <conio.h> 
#include <stdio.h> 
#include "Struct.cpp" 

void AddRecordTo(char* FileName)  //добавление новой записи в файл note.txt 

  clrscr(); 
  FILE* ptF=fopen(FileName,"ab"); 
  if(!ptF) 
    { 
      clrscr(); 
      cout<<"Open file error"; 
      getch(); 
      return; 
    } 
  NOTEBOOK NB; 
  cout<<"Enter the notebook params:\n\n"; 
  cout<<"Hor size, pix: "; 
  cin>>NB.DR.x; 
  cout<<"Ver size, pix: "; 
  cin>>NB.DR.y; 
  cout<<"Regeneration frequency, MHz: "; 
  cin>>NB.f; 
  cout<<"Size of Diagonal: "; 
  cin>>NB.d; 
  cout<<"HDD space, Gb: "; 
  cin>>NB.hdd; 
  cout<<"Model name: "; 
  cin>>NB.model; 
  cout<<"Processor frequency, MHz: "; 
  cin>>NB.procfrequency; 
  cout<<"Price, $: "; 
  cin>>NB.price; 
  fwrite(&NB,sizeof(NOTEBOOK),1,ptF); 
  fclose(ptF); 
  cout<<"\nRecord was added. Press any key for return to menu..."; 
  getch(); 


void Sort(int** Dimension,int DimSize)  //сортировка двумерного массива порядковых номеров записей в файле note.txt и цен на ноутбуки по возрастанию цен 

  bool WasIterate=true; 
  int Bufer; 
  while(WasIterate) 
    { 
      WasIterate=false; 
      for(int i=0;i<DimSize-1;i++) 
        if(Dimension[1][i]>Dimension[1][i+1]) 
          { 
            Bufer=Dimension[0][i]; 
            Dimension[0][i]=Dimension[0][i+1]; 
            Dimension[0][i+1]=Bufer; 
            Bufer=Dimension[1][i]; 
            Dimension[1][i]=Dimension[1][i+1]; 
            Dimension[1][i+1]=Bufer; 
            WasIterate=true; 
          } 
    } 


void AddRecordsFromTo(char* FileNameFrom,char* FileNameTo)  //добавление записей, удовлетворяющих условию из note.txt в result.txt 

  clrscr(); 
  FILE* ptFFrom=fopen(FileNameFrom,"rb");  //открытие файла note.txt на чтение 
  if(!ptFFrom) 
    { 
      clrscr(); 
      cout<<"Open file error"; 
      getch(); 
      return; 
    } 
  FILE* ptFTo=fopen(FileNameTo,"wb");  //открытие файла result.txt на запись 
  if(!ptFTo) 
    { 
      fclose(ptFFrom); 
      clrscr(); 
      cout<<"Open file error"; 
      getch(); 
      return; 
    } 
  NOTEBOOK NB; 
  fseek(ptFFrom,0,2); //установка указателя в файле note.txt на его конец 
  int NumOfRecords=ftell(ptFFrom)/sizeof(NOTEBOOK);  //подсчёт кол-ва записей в файле note.txt 
  rewind(ptFFrom);  //возврат указателя в файле note.txt на его начало 
  int* DimPrice[2];  //создание динамического двумерного массива для хранения порядковых номеров записей в файле note.txt и цен на ноутбуки 
  DimPrice[0]=new int[NumOfRecords]; 
  DimPrice[1]=new int[NumOfRecords]; 
  int Index=0; 
  while(fread(&NB,sizeof(NOTEBOOK),1,ptFFrom)) 
    { 
      DimPrice[0][Index]=Index; 
      DimPrice[1][Index]=NB.price; 
      Index++; 
    } 
  Sort(DimPrice,NumOfRecords); //после сортировки массива по возрастанию цен, порядковые номера записей будут указывать очерёдность считывания записей из файла node.txt 
  int CurIndex=0; 
  short RecCount=0; 
  fwrite(&RecCount,sizeof(short),1,ptFTo); //запись в начало файла result.txt 2-х байтового числа - кол-ва записей, которое для начала равно 0 
  while(CurIndex<NumOfRecords) 
    { 
      fseek(ptFFrom,DimPrice[0][CurIndex]*sizeof(NOTEBOOK),0); //установка указателя в файле node.txt на следующую по возрастанию цены запись 
      fread(&NB,sizeof(NOTEBOOK),1,ptFFrom); 
      if(NB.procfrequency>120)  //если частота процессора > 120 МГц, то записываем запись в файл result.txt 
        { 
          fwrite(&NB,sizeof(NOTEBOOK),1,ptFTo); 
          RecCount++; 
        } 
      CurIndex++; 
    } 
  rewind(ptFTo); 
  fwrite(&RecCount,sizeof(short),1,ptFTo);  //запись в начало файла result.txt 2-х байтового числа - кол-ва записей 
  if(DimPrice) 
    { 
      delete []DimPrice[0]; 
      delete []DimPrice[1]; 
    } 
  fclose(ptFTo); 
  fclose(ptFFrom); 
  cout<<"\n"<<RecCount<<" records was added. Press any key for return to menu..."; 
  getch(); 


int ShowMenu(void)  //меню 

  clrscr(); 
  cout<<"1 - Add record to end of \"note.txt\"\n"; 
  cout<<"2 - Add records from \"note.txt\" to \"result.txt\"\n"; 
  cout<<"3 - Exit Program\n\n\n"; 
  char Select; 
  cout<<"Make the choice: "; 
  Select=getch(); 
  int Result=1; 
  switch(Select) 
    { 
      case '1': 
        { 
          AddRecordTo("note.txt"); 
          break; 
        } 
      case '2': 
        { 
          AddRecordsFromTo("note.txt","result.txt"); 
          break; 
        } 
      case '3': 
        { 
          Result=0; 
          break; 
        } 
    } 
  return Result; 
}

================
Код

//Файл Struct.cpp: Код:

struct NOTEBOOK 

  struct disp_res 
    { // разрешающая способность дисплея 
      int x; // по горизонтали 
      int y; // по вертикали 
    }DR; 
  int f; // частота регенерации 
  float d; // размер диагонали дисплея 
  float hdd; // объём диска 
  char model[21]; // наименование 
  int procfrequency;  // частота процессора 
  int price;  // цена ноутбука 
};


PM MAIL   Вверх
vinter
Дата 5.3.2008, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 4
Всего: 56



clrscr() -> system("cls");
getch() -> cin.sync();
                 cin.get();

остальное можешь оставить


--------------------
Мой блог
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0705 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.