Форум программистов, компьютерный форум CyberForum.ru

исправить ошибку в коде: - C++

Восстановить пароль Регистрация
 
ISlonI
Сообщений: n/a
24.05.2012, 19:46     исправить ошибку в коде: #1
//h-файл
#include "stdafx.h"
#include <stdlib.h>
#include <iostream>
#include <fstream>
using namespace std;
class znak //клас-описание
{
private:
char surname[80];
int number;
int arr[3];
friend class klass;
public:
znak(){number=0;}
~znak(){}
friend istream &operator>>(ifstream &ZORG,znak &NARF)
{
return ZORG>>NARF.surname>>NARF.number>>NARF.arr[0]>>NARF.arr[1]>>NARF.arr[2];
}
friend ostream &operator <<(ostream &out,znak &z)
{
return out<<z.surname<<" "<<z.number<<" "<<z.arr[0]<<" "<<z.arr[1]<<" "<<z.arr[2]<<"\n\n";
}
char* getSurname(){return surname;}
int getNumber(){return number;}
int getArr(int i){return arr[i];}
int* getA(){return arr;}
void setSurname(char* str) {strcpy(surname,str);}
void setNum(int n) {number=n;}
void setArr(int i, int n) {arr[i]=n;}

static bool Surname(znak& a,znak& b){return strcmp(a.surname,b.surname)<0;}
static bool Number(znak& a,znak& b){return a.number<b.number;}
static bool Age(znak& a,znak& b){return a.arr<b.arr;}

};

class klass //основной класс
{
public:
znak z[50];
struct hesh {int key[3]; int index;};
hesh table[100];
int count;

static void arrcopy(int* a,int* b) //копирование массива
{
a[0]=b[0];
a[1]=b[1];
a[2]=b[2];
}

static bool arrcmp(int* a,int* b) // сравнение массивов
{
return a[0]==b[0] && a[1]==b[1] && a[2]==b[2];
}

static int heshfunc(int* a) // сумма эл-ов массива
{
return a[0]+a[1]+a[2];
}

void createtable() // создаем таблицу
{
int i,j,i1=0;
for(i=0;i<100;i++)table[i].index=-1;

for(j=0;j<50 && z[j].number;j++)
{
i1=0;
while(1)
{
i=((i1*i1)+heshfunc(z[j].arr))%50;
if(table[i].index==-1) break;
i1++;
}
table[i].index=j;
arrcopy(table[i].key,z[j].arr);
}
}

int search (int* k) // поиск в таблице
{
int j,i1=0;
while(1)
{
j=(heshfunc(k)+i1*i1)%50;
if(arrcmp(table[j].key,k))break;
i1++;
if(i1>100000){cout<<"not found\n\n";return -1000;}
}
cout<<" "<<i1<<" \n";
return table[j].index;
}

friend istream &operator >>(ifstream &in,klass &k) // ввод
{
for(int i=0;i<50;i++)
{
in>>k.z[i];
if(!k.z[i].getNumber()){k.count=i;return in;}
}
k.count=50;
return in;
}
friend ostream &operator <<(ostream &out,klass &k) // вывод
{
for(int i=0;i<k.count;i++)
{
out<<k.z[i];
}
return out;
}
void binr()
{
fstream in("binka",ios::in|ios::out|ios::binary|ios::trunc);
in.write((char*) this,sizeof(klass));
in.flush();
}

void binee()
{
fstream in("binka",ios::in|ios::out|ios::binary);
in.read((char*) this,sizeof(klass));
}

znak extract(int i)
{
znak zn;
ifstream bin("binka",ios::binary|ios::in);
bin.seekg(sizeof(znak)*i,ios::beg);
bin.read((char*) zn,sizeof(znak)); // пишет, что нельзя преобразовать знак в чар.
}
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2012, 19:46     исправить ошибку в коде:
Посмотрите здесь:

Исправить ошибку в коде C++
Исправить ошибку в коде с++ C++
C++ Исправить ошибку в коде
C++ исправить ошибку в коде
C++ Исправить ошибку в коде.
исправить ошибку в коде C++
Исправить ошибку в коде C++
C++ Исправить ошибку в коде

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 05:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru