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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2011, 00:09   #1
ordinary_smile
Пользователь
 
Регистрация: 15.05.2011
Сообщений: 25
По умолчанию структуры

Здравствуйте!У меня проблемка с задачей.
Условие:
Для книг, хранящихся в библиотеке, задаются регистрационный номер
книги, автор, название, год издания, издательство, количество страниц. Вывести список книг с фамилиями авторов в алфавитном порядке, изданных после заданного года.

Проблема в том что я не знаю самого главного.Как вывести в алфавитном порядке, изданных после заданного года.
Вот мой код.Помогите пожалуйста.
Код:
#include "stdafx.h"


#include <iostream>
#include <string.h>
using namespace std;

int main ()
{  
	struct str
	{
		char reg_nom [4];
		char avtor [20];
		char nazva [20];
		char god [4];
		char izdatel [20];
		char stran [5];
	} ;
	str bibl [100];
	int k,i,j;
	cout << "Vvedite kol-vo knig\n" ;
cin >> k;
for (i=0; i < k; i++)
{
cout << "Vvedite registratsionnuy nomer\n";
cin >> bibl[i].reg_nom;
cout << "Vvedite avtora\n";
cin >> bibl[i].avtor;
cout << "vvedite nazvanie knigi\n";
cin >> bibl[i].nazva;
cout << "vvedite god izdaniya\n";
cin >> bibl[i].god;
cout <<"vvedite izdatelstvo\n";
cin >> bibl[i].izdatel;
cout << "vveditw kolichestvo stranits\n";
cin >> bibl[i].stran;
cout<<"\n----------------------------------\n";
}
char av[4]; 
	int god;
	cout<<"====================="<<endl;
	cout<<"Vvedite god"<<endl;
	cin>>av;
	
	
return 0;
}

Последний раз редактировалось Stilet; 30.09.2011 в 08:31.
ordinary_smile вне форума Ответить с цитированием
Старый 30.09.2011, 03:34   #2
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

http://lmgtfy.com/?q=%D0%BE%D1%82%D1...83%D1%80%D1%83
You are welcome!
TwiX вне форума Ответить с цитированием
Старый 30.09.2011, 15:17   #3
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

qsort юзай. (можно std::sort)

если будут проблемы пиши.

выводи также как и вводил , но с условием.
onewho вне форума Ответить с цитированием
Старый 30.09.2011, 19:54   #4
_kilik_
Пользователь
 
Аватар для _kilik_
 
Регистрация: 16.08.2011
Сообщений: 69
По умолчанию

Вот где-то так.
Код:
#include <iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
	struct book
	{
		int reg_nom;
		string avtor;
		string nazva;
		int god;
		string izdatel;
		int stran;
	};
class library{
	vector<book> lib;
	void add_book(book nev_book){lib.push_back(nev_book);};//добавить одну книгу
public:
	int in_book();//добавляем книги с клавы
	int my_sort();//сортировать книги по автору
	int out_after_year_public();//выводит книги после н-ого года

};
bool sor(book a,book b){//ф-я сравнения
	return a.avtor<b.avtor;
}

int main (){  
	setlocale(LC_ALL,"Russian");//коректн рус
	library new_lib;//создадим библиатеку
	new_lib.in_book();//вводим книги
	new_lib.my_sort();//сортируем
	new_lib.out_after_year_public();//выводим на монитор
	system("pause");
return 0;
}
int library::in_book(){
	book temp;
	char Y_N='Y';
	do{
		cout << "Vvedite registratsionnuy nomer\n";
		cin >> temp.reg_nom;
		cout << "Vvedite avtora\n";
		cin >> temp.avtor;
		cout << "vvedite nazvanie knigi\n";
		cin >> temp.nazva;
		cout << "vvedite god izdaniya\n";
		cin >> temp.god;
		cout <<"vvedite izdatelstvo\n";
		cin >> temp.izdatel;
		cout << "vveditw kolichestvo stranits\n";
		cin >> temp.stran;
		cout<<"\n----------------------------------\n";
		add_book(temp);
		cout << "Вы хотите еще добавить книгу (Y/N)?\n" ;
		cin>>Y_N;
	}while(Y_N =='Y');
	return 0;
}
int library::out_after_year_public(){//выводит книги после ного года
	int year;
	cout<<"====================="<<endl;
	cout<<"Vvedite god"<<endl;
	cin>>year;
	for(int i=0;i<lib.size();i++){
		if(lib[i].god>year){
			cout<<lib[i].avtor<<endl;
			cout<<lib[i].god<<endl;
			cout<<lib[i].izdatel<<endl;
			cout<<lib[i].nazva<<endl;
			cout<<lib[i].reg_nom<<endl;
			cout<<lib[i].stran<<endl<<endl;
		}
	}
	return 0;
}
int library::my_sort(){
	sort(lib.begin(),lib.end(),sor);
	return 0;
}

Последний раз редактировалось _kilik_; 30.09.2011 в 20:01.
_kilik_ вне форума Ответить с цитированием
Старый 02.10.2011, 21:03   #5
ordinary_smile
Пользователь
 
Регистрация: 15.05.2011
Сообщений: 25
По умолчанию

Спасибо конечно большое,но
что то оно как то не правильно работает!
когда нажимаешь y,тоесть хочешь ввести еще одну книгу оно всеравно не дает ввести вторую и выводит бред.я конечно попробую немного переписать,но не уверенна что выйдет.
ordinary_smile вне форума Ответить с цитированием
Старый 03.10.2011, 01:04   #6
_kilik_
Пользователь
 
Аватар для _kilik_
 
Регистрация: 16.08.2011
Сообщений: 69
По умолчанию

Не знаю, что у тебя не получается. Только что проверил, все работает.
Может ты не учел реестр букв (игрек) ‘y’ и 'Y'не одно и тоже. Далее вводишь год и все.

Последний раз редактировалось _kilik_; 03.10.2011 в 01:09.
_kilik_ вне форума Ответить с цитированием
Старый 03.10.2011, 01:18   #7
ordinary_smile
Пользователь
 
Регистрация: 15.05.2011
Сообщений: 25
По умолчанию

Да,Я уже поняла.в этом и была проблема.
честно говоря код для меня мало понятен тк мы еще такого не учили.как то проще написать нельзя и чтоб мое начало было?
ordinary_smile вне форума Ответить с цитированием
Старый 10.10.2011, 00:31   #8
eriskay
 
Регистрация: 06.01.2011
Сообщений: 9
Радость

Вот, правда без сортировки по алфавиту, это для меня сложновато

Код:
// 7.cpp : main project file.

#include "stdafx.h"
#include <iostream>
#include <string.h>
using namespace std;

int main ()
{ 

	struct str
{
	char reg_nom [4];
	char avtor [20];
	char nazva [20];
	int god ;
	char izdatel [20];
	char stran [5];
} ;
	str bibl [100];
	int k,i;
	cout << "Vvedite kol-vo knig\n" ;
	cin >> k;
	for (i=0; i < k; i++)
	{
		cout << "Vvedite registratsionnuy nomer\n";
		cin >> bibl[i].reg_nom;
		cout << "Vvedite avtora\n";
		cin >> bibl[i].avtor;
		cout << "vvedite nazvanie knigi\n";
		cin >> bibl[i].nazva;
		cout << "vvedite god izdaniya\n";
		cin >> bibl[i].god;
		cout <<"vvedite izdatelstvo\n";
		cin >> bibl[i].izdatel;
		cout << "vveditw kolichestvo stranits\n";
		cin >> bibl[i].stran;
		cout<<"\n----------------------------------\n";
	}
	int year;
	cout<<"====================="<<endl;
	cout<<"Vvedite god"<<endl;
	cin>>year;
	for (i=0; i < k; i++)
	{
		if (year<bibl[i].god)
		{
			cout << " registratsionnuy nomer \n"<<bibl[i].reg_nom;
			cout<<"\n";
			cout << "avtor \n"<<bibl[i].avtor;
			cout<<"\n";
			cout << " nazvanie knigi \n"<<bibl[i].nazva;
			cout<<"\n";
			cout << " god izdaniya \n"<<bibl[i].god;
			cout<<"\n";
			cout <<" izdatelstvo \n"<<bibl[i].izdatel;
			cout<<"\n";
			cout << " kolichestvo stranits \n"<<bibl[i].stran;
			cout<<"\n";
			cout<<"\n--------E---N---D-------------\n";
		}
	}
	return 0;
}

Последний раз редактировалось eriskay; 10.10.2011 в 00:36.
eriskay вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
структуры Seferus Общие вопросы C/C++ 4 29.11.2010 19:34
Структуры Ste Общие вопросы C/C++ 2 26.11.2010 00:00
Структуры c++ Lille Happy Помощь студентам 1 25.11.2010 12:39
структуры Артэс Общие вопросы C/C++ 3 25.08.2010 15:55