Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2012, 20:00   #1
skorpionsej
Пользователь
 
Регистрация: 10.10.2012
Сообщений: 10
По умолчанию Структура NOTE

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

Код:
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <iomanip>
using namespace std;
#define N 8

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

}info[N];

void Sort(void)
{
    int i, k, BigDate1, BigDate2;
    k = N-1;
    bool fs = true;
    while (fs)
    {
        fs = false;
        for (i=0;i<k;i++)
        {
            BigDate1 = info[i].date[2]*10000 + info[i].date[1]*100 + info[i].date[0];
            BigDate2 = info[i+1].date[2]*10000 + info[i+1].date[1]*100 + info[i+1].date[0];
            if (BigDate1 < BigDate2)
            {
                struct NOTE Tmp;
                Tmp = info[i];
                info[i] = info[i+1];
                info[i+1] = Tmp;
                fs = true;
            }
        }
        k--;
        if (k<0) fs = false;
    }
}

int main(int argc, _TCHAR* argv[])
{
	int j, i;
	setlocale(LC_ALL,"russian");
	char phone[50];  //Ввод данных
	for(int i=0; i<N; ++i)
	{
		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];
	}                // Сортировка
	Sort();         //Вывод на экран.
	for(int i=0; i<N; ++i)
	{
		cout << "\n----------------------------------------------\n";
		cout << "Ф.И.О: " << setw(20) << info[i].FIO << endl
			<< "Телефон: " << setw(20) << info[i].phone << endl
			<< "Дата рождения:" << endl
			<< setw(30) << "День  >> " << info[i].date[0] << endl
			<< setw(30) << "Месяц >> " << info[i].date[1] << endl
			<< setw(30) << "Год   >> " << info[i].date[2] << endl;
	}              //Выбор по месяцу.
	cout << " Введите месяц :";
	(тут должен быть код о выводе информации и людях месяц которых введен с клавиатуры)
	else
	{
		cout << " Таких людей в списке нет\n";
	}
	system("pause");
	return 0;
}
не реализовал это: (что-то в коде не так, да и недописан)
- вывод на экран информации о людях, чьи дни рождения приходятся на месяц, значение которого введено с клавиатуры;
- если таких людей нет, выдать на дисплей соответствующее сообщение.

помогите пожалуйста бедному студенту
skorpionsej вне форума Ответить с цитированием
Старый 16.10.2012, 20:11   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
 int m; cout << " Введите месяц :"; cin>>m;
	for(int i=0; i<N; ++i)
	{ if(info[i].date[0]!=m) continue;
		cout << "\n----------------------------------------------\n";
		cout << "Ф.И.О: " << setw(20) << info[i].FIO << endl
			<< "Телефон: " << setw(20) << info[i].phone << endl
			<< "Дата рождения:" << endl
			<< setw(30) << "День  >> " << info[i].date[0] << endl
			<< setw(30) << "Месяц >> " << info[i].date[1] << endl
			<< setw(30) << "Год   >> " << info[i].date[2] << endl;
	}
Так понятно?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.10.2012, 21:14   #3
skorpionsej
Пользователь
 
Регистрация: 10.10.2012
Сообщений: 10
По умолчанию

работает, но некорректно отображает информацию и сотрудниках по введенному месяцу

Код:
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <iomanip>
using namespace std;
#define N 2

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

}info[N];

void Sort(void)
{
    int i, k, BigDate1, BigDate2;
    k = N-1;
    bool fs = true;
    while (fs)
    {
        fs = false;
        for (i=0;i<k;i++)
        {
            BigDate1 = info[i].date[2]*10000 + info[i].date[1]*100 + info[i].date[0];
            BigDate2 = info[i+1].date[2]*10000 + info[i+1].date[1]*100 + info[i+1].date[0];
            if (BigDate1 < BigDate2)
            {
                struct NOTE Tmp;
                Tmp = info[i];
                info[i] = info[i+1];
                info[i+1] = Tmp;
                fs = true;
            }
        }
        k--;
        if (k<0) fs = false;
    }
}

int main(int argc, _TCHAR* argv[])
{
	setlocale(LC_ALL,"russian");
	char phone[50];  //Ввод данных
	for(int i=0; i<N; ++i)
	{
		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];
	}                // Сортировка
	Sort();         //Вывод на экран.
	for(int i=0; i<N; ++i)
	{
		cout << "\n----------------------------------------------\n";
		cout << "Ф.И.О: " << setw(20) << info[i].FIO << endl
			<< "Телефон: " << setw(20) << info[i].phone << endl
			<< "Дата рождения:" << endl
			<< setw(30) << "День  >> " << info[i].date[0] << endl
			<< setw(30) << "Месяц >> " << info[i].date[1] << endl
			<< setw(30) << "Год   >> " << info[i].date[2] << endl;
	}              //Выбор по номеру телефона.
	int m; 
	cout << " Введите месяц :"; 
	cin>>m;
	for(int i=0; i<N; ++i)
	{
		if(info[i].date[0]=m)
		{
		cout << endl;
		cout << "Найденный сотрудник по месяцу " <<m<< " :"<< endl;
		cout << "\n----------------------------------------------\n";
		cout << "Ф.И.О: " << setw(20) << info[i].FIO << endl
			<< "Телефон: " << setw(20) << info[i].phone << endl
			<< "Дата рождения:" << endl
			<< setw(30) << "День  >> " << info[i].date[0] << endl
			<< setw(30) << "Месяц >> " << info[i].date[1] << endl
			<< setw(30) << "Год   >> " << info[i].date[2] << endl;
		}
		else{
			cout << "Такого сотрудника не существует" << endl;
		}
	}
	system("pause");
	return 0;
}
skorpionsej вне форума Ответить с цитированием
Старый 16.10.2012, 22:29   #4
skorpionsej
Пользователь
 
Регистрация: 10.10.2012
Сообщений: 10
По умолчанию

правильный рабочий код:

Код:
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <iomanip>
using namespace std;
#define N 2

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

}info[N];

void Sort(void)
{
    int i, k, BigDate1, BigDate2;
    k = N-1;
    bool fs = true;
    while (fs)
    {
        fs = false;
        for (i=0;i<k;i++)
        {
            BigDate1 = info[i].date[2]*10000 + info[i].date[1]*100 + info[i].date[0];
            BigDate2 = info[i+1].date[2]*10000 + info[i+1].date[1]*100 + info[i+1].date[0];
            if (BigDate1 < BigDate2)
            {
                struct NOTE Tmp;
                Tmp = info[i];
                info[i] = info[i+1];
                info[i+1] = Tmp;
                fs = true;
            }
        }
        k--;
        if (k<0) fs = false;
    }
}

int main(int argc, _TCHAR* argv[])
{
	setlocale(LC_ALL,"russian");
	char phone[50];  //Ввод данных
	for(int i=0; i<N; ++i)
	{
		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];
	}                // Сортировка
	Sort();         //Вывод на экран.
	for(int i=0; i<N; ++i)
	{
		cout << "\n----------------------------------------------\n";
		cout << "Ф.И.О: " << setw(20) << info[i].FIO << endl
			<< "Телефон: " << setw(20) << info[i].phone << endl
			<< "Дата рождения:" << endl
			<< setw(30) << "День  >> " << info[i].date[0] << endl
			<< setw(30) << "Месяц >> " << info[i].date[1] << endl
			<< setw(30) << "Год   >> " << info[i].date[2] << endl;
	}              //Выбор по номеру телефона.
	int m; 
	cout << " Введите месяц :"; 
	cin>>m;
	for(int i=0; i<N; ++i)
	{
		if (info[i].date[1]==m)
		{
		cout << endl;
		cout << "Найденный сотрудник по месяцу " << m << " :"<< endl;
		cout << "\n----------------------------------------------\n";
		cout << "Ф.И.О: " << setw(20) << info[i].FIO << endl
			<< "Телефон: " << setw(20) << info[i].phone << endl
			<< "Дата рождения:" << endl
			<< setw(30) << "День  >> " << info[i].date[0] << endl
			<< setw(30) << "Месяц >> " << info[i].date[1] << endl
			<< setw(30) << "Год   >> " << info[i].date[2] << endl;
		continue;
		}
		else 
		{
			cout << "Такого сотрудника не существует" << endl;
		}
	}
	system("pause");
	return 0;
}

Последний раз редактировалось skorpionsej; 17.10.2012 в 16:22.
skorpionsej вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Описать структуру Note C++ phreaker228 Помощь студентам 1 15.06.2012 00:41
C# Определить класс с именем NOTE Svetlana11 Помощь студентам 0 03.04.2012 22:55
С\С++ Описать стуктуру NOTE Crazy_caramel Помощь студентам 1 25.12.2009 01:44
Описать структуру NOTE stellavin Общие вопросы .NET 1 13.12.2009 21:01