PDA

Просмотр полной версии : Структуры в Visual C++



Lio
26.05.2009, 18:35
надо сделать прогу которая выводила бы инфу о жильцах дома по заданной улице и заданному дому.В структуре есть такие разделы:Фамилия , имя, отчество жильца , номер дома , номер квартиры, название улицы.Заполняется прога с клавы.

WinMain
27.05.2009, 01:39
И что дальше? Хотя бы уточни, как должна быть сделана эта программа.
С графическим интерфейсом или с консольным?
Где храниться должны эти данные?

Lio
27.05.2009, 11:17
прога делается в консоле, можно сделать чтобы все данные заполнялись с клавы или они хранились в массиве и поиск потом происходил из него. Как-то так.

Albor
27.05.2009, 12:05
даю наводку:


#include <iostream>
#include "algorithm"

struct address
{
address()
{
std::fill(street, street+100,0);
std::fill(home, home+10,0);
std::fill(flat, flat+10,0);
}
address(char * pStreet,char * pHome, char * pFlat)
{
if(pStreet) strcpy(street,pStreet);
if(pHome) strcpy(home,pHome);
if(pFlat) strcpy(flat,pFlat);
}
void print()
{
std::cout<<street<<"-str"<<", "<<home<<"/"<<flat;
}
private:
char street[100];
char home[10];
char flat[10];
};

struct humman
{
humman()
{
std::fill(fam, fam+100,0);
std::fill(im, im+100,0);
std::fill(ot, ot+100,0);
}
humman(char * pFam,char * pIm, char * pOt, address & Addr)
{
if(pFam) strcpy(fam,pFam);
if(pIm) strcpy(im,pIm);
if(pOt) strcpy(ot,pOt);
addr=Addr;
}
void print()
{
std::cout<<fam<<' '<<im<<' '<<ot<<", address: ";
addr.print();
}
private:
char fam[100];
char im[100];
char ot[100];
address addr;
};

void main()
{
humman h("Ivanov","Ivan","Ivanovich",address ("Sunny","10-a","17-b"));
h.print();
std::cout<<std::endl;
}
Остальное самостоятельно. Будут вопросы задавай.

Lio
28.05.2009, 11:41
#include <iostream.h>
#include<string.h>
struct info
{
char Famil[20];
char Name[20];
char Otch[20];
char ulica[20];
int dom;
int room;
};

int main()
{
int i=0;
int r=0;
int metka;
int house;
char street[20];
int Vvod[10];
for(i=0;i<10;i++)
{
cout<<"Vvedite number or -1 for out\n";
cin>>metka;
if ( metka==-1)
break;
cout<<"Vvedite number room\n";
cin>>Vvod[i].room;
cout<<"Vvedite number doma\n";
cin>>Vvod[i].dom;
cout<<"Vvedite Familiu\n";
cin>>Vvod[i].Famil;
cout<<"Vvedite Name\n";
cin>>Vvod[i].Name;
cout<<"Vvedite Otchestvo\n";
cin>>Vvod[i].Otch;
cout<<"Vvedite street\n";
cin>>Vvod[i].ulica;
}
cout<<" Vvedite ulicu\n";
cin>>street;
cout<<"Vvedite dom \n":
cin>>house;
r=i;
bool err = true;
for(i=0;i<r;i++)
{
if(!strcmp(street,Vvod[i].ulica))



{
err=false;
cout<<"Ulica"<<"Vvod[i].ulica"<<"\t";
cout<<"dom"<<"Vvod[i].dom"<<"\t";
cout<<"kvartira"<<"Vvod[i].room"<<"\t";
cout<<"Vvod[i].Famil"<<"\t";
cout<<"Vvod[i].Name"<<"\t";
cout<<"Vvod[i].Otch"<<endl;
}

}
if(err)
cout<<"Dannye vvedeny ne verno,pojaluysta budte vnimatelnee!\n";
return 0;
}

--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Но в этом коде у меня гдето ошибка или недоработка. Заполняю прогу данными. Потом у меня выводит : введите улицу, введите дом, ты вводишь и потом прога должна бы искать совпадения но он при любом раскладе выводит что данные введены неверно.

Albor
28.05.2009, 12:39
Этот код компилятор вообще не должен пропустить. Ты объявляешь массив Vvod из 10 int-ов, а используешь его как объект info. Должно быть info Vvod[10].
но он при любом раскладе выводит что данные введены неверно. Помни о том что strcmp учитывает регистр букв, поэтому строку для поиска нужно вводить точно так, как она хранится в массиве.