Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] Описание структуры


Автор: Alex31kv 7.4.2007, 02:32
Помогите пожалуйста решить задачку на Turbo C++:

Описать структуру с именем NOTE, содержащую следующие поля:
- фамилия, имя;
- номер телефона;
- дата рождения (массив из трех элементов).
Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив, состоящий из 8 элементов типа NOTE;
- записи должны быть упорядочениы по трем первым цифрам номера телефона;
- вывод на экран информации о человеке, чья фамилия введена с клавиатуры, если такого нет, выдать на дисплей соответствующее сообщение.

Заранее всем кто принял участие в решении этой задачки огромное спасибо!

Автор: apook 7.4.2007, 04:22
Поищи поисковиком я такую задачу недавно решал

Автор: Alex31kv 7.4.2007, 14:11
искал, но не нашел на турбо Си++, нашел решение только на Pascal и на Delphi.
помогите решить или подскажи ссылку если не сложно на Си.

Автор: apook 7.4.2007, 14:52
Я ошибся там данные вводились из файла и в массив а не в структуру
и результат выводился по фамилии а не по телефону надо-же так
 smile 

Автор: Alex31kv 7.4.2007, 15:13
ну так кто нибудь поможет с задачей? пожалуйста

Автор: apook 7.4.2007, 22:59
Код

#include<conio.h>
#include<iostream.h>
#include<iomanip.h>
#include<fstream.h>
#include<string.h>
#include<stdlib.h>

#define N 8


int sort_function( const void *a, const void *b )
{
    return( strcmp((char *)a, (char *)b) );
}

struct NOTE
{
    char FIO[ 100 ];
    char phone[ 50 ];
    int date[ 3 ];
} info[ 8 ];


void sorts()
{
int i, j, p;
char dt[ N ][ 4 ];

fstream file;
file.open( ".\\data.dat", ios::out | ios::in | ios::binary | ios::trunc );

for( i=0; i<N; ++i )
{
    strncpy( dt[ i ], info[ i ].phone, 3 );
    dt[ i ][ 3 ]='\0';
    }
qsort( (void *)&dt, N, sizeof(dt[ 0 ]), sort_function );

file.clear();
file.seekg( 0, ios::beg );

for( i=0; i<N; ++i )
    for( j=0; j<N; j++ )
        if( strncmp( info[ i ].phone, dt[ j ], strlen(dt[ j ]) )==0 )
        { 
            file.write( (char*)&info[ j ], sizeof(NOTE) );
            break;
            }

file.clear();
file.seekg( 0, ios::beg );
for( i=0; i<N; ++i )
    file.read( (char *)&info[ i ], sizeof(NOTE) );

file.close();
return;
}


void main()
{
int i, j;
char phone[ 50 ];

for( i=0; i<N; ++i )
{
    clrscr();

    cout << "\n\t---- " << i+1 << " ---\nФамилия и инициалы :";
    cin.ignore();
    cin.get( info[ i ].FIO, 100 );
    cout << "Номер телефона :";
    cin.ignore();
    cin.get( info[ i ].phone, 50 );

    cout << "Дата :\nЧисло >> ";
    cin >> info[ i ].date[ 0 ];

    cout << "Месяц >> ";
    cin >> info[ i ].date[ 1 ];

    cout << "Год >> ";
    cin >> info[ i ].date[ 2 ];
    }

sorts();

cout << "Введите номер телефона :";
cin.ignore();
cin.get( phone, 50 );


for( i=0, j=0; i<N; ++i )
    if( strcmp( info[ i ].phone, phone )==0 )
        ++j;

if( j>0 )
{
    cout << "\nНомер " << phone << "  " << j << " в данном списке" 
         << "\n----------------------------------------------\n";
    for( i=0; i<N; ++i )
    {
        if( strcmp( info[ i ].phone, phone )==0 )
        {
            cout << "Фамилия и Инициалы " << setw( 20 ) << info[ i ].FIO << endl
                 << "Дата рождения :" << endl
                 << setw( 30 ) << "День  >> " << info[ i ].date[ 0 ] << endl
                 << setw( 30 ) << "Месяц >> " << info[ i ].date[ 1 ] << endl
                 << setw( 30 ) << "Год   >> " << info[ i ].date[ 2 ] << endl;
            } 
        else continue;
        cout << endl;
        }
    }    
else
    cout << "Номер " << phone << " отсутствуют в данном списке\n";

cout << "Нажмите Интер\n";
getch();
return;
}


Не знаю будет ли корректно работать Tutbo C++ шоито подгдлючивает
 smile 



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)