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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2011, 12:47   #1
Lyt
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 12
По умолчанию обработка структур(с/с++)

как сделать ввод разобрался, а с выводом что то напряги
выводит почему-то только последний элемент структуры и кучу мусора после
Код:
#include<iostream.h>
#include<string.h>
#include<stdio.h>
#include<conio.h>
struct prepod
{
	int nomer;
	char fio[25];
	char dolgn[15];
	int chas;
};
void vvod(prepod*,int);
void vivod(prepod *s,int);
void main(void)
{
	prepod *s;
	int n;
	cout<<"n= ";
	cin>>n;
	cout<<endl;
	s=new prepod[n];
	vvod(s,n);
	vivod(s,n);
	getch();
}
void vvod(prepod *s,int n)
{
	for (int i=0;i<n;i++)
	{
		cout<<"nomer= ";
		cin>>s->nomer;
		cout<<" fio= ";
		cin.get();
		cin.getline(s->fio,25);
		cout<<" dolgnost= ";
		cin.getline(s->dolgn,15);
		cout<<" kol-vo chasov= ";
		cin>>s->chas;
	}
}
void vivod(prepod *s,int n)
{
	for(int i=0;i<n;i++)
	{
	cout<<(*(s+i)).nomer;
	cout<<' '<<(*(s+i)).fio;
	cout<<' '<<(*(s+i)).dolgn;
	cout<<' '<<(*(s+i)).chas;
	cout<<endl;
	}
}
Lyt вне форума Ответить с цитированием
Старый 25.12.2011, 14:25   #2
Lyt
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 12
По умолчанию

вот что получается:
Lyt вне форума Ответить с цитированием
Старый 25.12.2011, 14:29   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну что у вас написано то и получается
вы не выводите же переносы строк(и ничего прочего).
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 25.12.2011, 14:31   #4
Lyt
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
ну что у вас написано то и получается
вы не выводите же переносы строк(и ничего прочего).
а это как? можно пример какой-нибудь?=)
Lyt вне форума Ответить с цитированием
Старый 25.12.2011, 14:35   #5
Lyt
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 12
По умолчанию

Код:
cout<<endl;
- это разве не перенос строки
Lyt вне форума Ответить с цитированием
Старый 25.12.2011, 17:11   #6
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

Код:
void vvod(prepod *s,int n)
{
	for (int i=0;i<n;i++)
	{
		cout<<"nomer= ";
		cin>>s->nomer;
		cout<<" fio= ";
		cin.get();
		cin.getline(s->fio,25);
		cout<<" dolgnost= ";
		cin.getline(s->dolgn,15);
		cout<<" kol-vo chasov= ";
		cin>>s->chas;
                
                s++;            //<<<-----------
	}
}
dr.Chas вне форума Ответить с цитированием
Старый 25.12.2011, 17:13   #7
Lyt
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 12
По умолчанию

спасибо, разобрался!
Lyt вне форума Ответить с цитированием
Старый 25.12.2011, 18:01   #8
Lyt
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 12
По умолчанию

далее необходимо выполнить сортировку по полю nomer
ругается на swap. В структурах нельзя swap использовать? Как организовать тогда обмен местами элементов s(i+1) и s(i)
Код:
void sort(prepod *s,int n)
{
	int t=1;
	while(t!=0)
	{
		t=0;
		for(int i=0;i<n-1;i++)
		{
			if((*(s+i)).nomer>(*s).nomer)
				swap((*(s+i)),(*s));
			t=1;
		}
	}
}
Lyt вне форума Ответить с цитированием
Старый 25.12.2011, 18:19   #9
Lyt
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 12
По умолчанию

error C2065: 'swap' : undeclared identifier
или библиотека какая ему нужна своя?
Lyt вне форума Ответить с цитированием
Старый 25.12.2011, 21:51   #10
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

Цитата:
Как организовать тогда обмен местами элементов s(i+1) и s(i)
Например по старинке, через 3ю переменную?
dr.Chas вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка структур данных yulja-uk Помощь студентам 0 03.12.2011 09:56
Обработка структур Kemb Помощь студентам 1 24.11.2011 09:57
ОБРАБОТКА СТРУКТУР Kemb Общие вопросы C/C++ 0 22.11.2011 20:16
Обработка структур данных Credo4444 Помощь студентам 1 26.04.2011 20:59
обработка структур данных. Narim Общие вопросы C/C++ 4 20.04.2011 19:56