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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.09.2013, 20:19   #1
Alexandr-
Пользователь
 
Регистрация: 04.03.2013
Сообщений: 79
По умолчанию Указатель на структуру

Язык Си.
Создать структуру маршруты, хранящую информацию о маршрутах поездов ЖД вокзала.:пункт отправки, пункт назначения, время отправки, время прибытия, дни недели, по которым работает маршрут. Создать массив таких структур и заполнить его. Организовать поиск всех маршрутов по дням недели: пользователь вводит день недели(цифрой), а программа выводит все маршруты, работающие в этот день. Все действия со структурой производить с помощью указателя на нее, напрямую к полям структуры обращаться нельзя.

В общем не получается сделать задачу с указателем.
Код задачи без указателя(работает):
Код:
#include <stdio.h>
#include <conio.h>	 

struct TRAIN {	 
    char punkt_otpravki[30];
    char punkt_naznacheniya[25];
	int time_otpravki; 
	int time_pribitiya;
    int den_nedeli;
};
int main()
{ 
    struct TRAIN tr[3];
int i,s,k=0;
	for (i=0;i<3;i++) {
		printf("vvedite punkt otpravki\n");
		scanf("%s",tr[i].punkt_otpravki);
		printf("vvedite punkt naznacheniya\n");
		scanf("%s",tr[i].punkt_naznacheniya);
		printf("vvedite vremya otpravki\n");
		scanf("%d",&tr[i].time_otpravki);
		printf("vvedite vremya pribitiya\n");
		scanf("%d",&tr[i].time_pribitiya);
		printf("vvedite den nedeli\n");
		scanf("%d",&tr[i].den_nedeli);
	}
	printf("\nVvedite nujnii den nedeli\n");
	scanf("%d",&s);
for (i=0;i<3;i++) {
	if (tr[i].den_nedeli==s) {
		printf("punkt otpravki %s\n, punkt naznacheniya %s\n,vremya otpravki %d\n,vremya pribitiya  %d\n",
		tr[i].punkt_otpravki,tr[i].punkt_naznacheniya,tr[i].time_otpravki,tr[i].time_pribitiya);k++;
}} if(k==0) printf("error");
getch(); return 0; }
С указателем получилось как-то так(только не дописал вывод):
Код:
#include <iostream>
#include <stdio.h>
#include <conio.h>	 
struct TRAIN {	 
    char punkt_otpravki[30];
    char punkt_naznacheniya[25];
	int time_otpravki; 
	int time_pribitiya;
    int den_nedeli;
};
int main()
{ const col=7;
    struct TRAIN tr[col];
	TRAIN *m;
	for (m=tr;m<tr+col;m++) {
		cout<<"vvedite punkt otpravki\n";
		cin>>m->punkt_otpravki;
		cout<<"vvedite punkt naznacheniya\n";
		cin>>m->punkt_naznacheniya\n";
		cout<<"vvedite vremya otpravki\n";
		cin>>m->time_otpravki\n";
		cout<<"vvedite vremya pribitiya\n";
		cin>>m->time_pribitiya\n";
		cout<<"vvedite den nedeli\n";
		cin>>m->den_nedeli\n";
	}
	cout<<\nVvedite nujnii den nedeli\n";
	int s;
	cin>>s;
for (m=tr;m<tr+col;m++) {
if (m->den_nedeli==s)
getch(); return 0;
Она конечно же не работает(делал по образцу). Делаю в Microsoft visual C++ и когда пишу #include <iostream> высвечивается просто 1 ошибка:
fatal error C1189: #error : "eh.h is only for C++!"
Помогите пожалуйста написать код правильно(желательно не использовав cout,cin)...
Alexandr- вне форума Ответить с цитированием
Старый 15.09.2013, 20:32   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,322
По умолчанию

А так? (писал в блокноте)
Код:
#include <stdio.h>
#include <conio.h>

struct TRAIN {     
    char punkt_otpravki[30];
    char punkt_naznacheniya[25];
    int time_otpravki; 
    int time_pribitiya;
    int den_nedeli;
};

int
main()
{
    const int col=7;
    struct TRAIN tr[col];
    struct TRAIN *m;
    int s,k=0;
    for (m=tr;m<tr+col;m++) {
        printf("vvedite punkt otpravki\n");
        scanf("%s",m->punkt_otpravki);
        printf("vvedite punkt naznacheniya\n");
        scanf("%s",m->punkt_naznacheniya);
        printf("vvedite vremya otpravki\n");
        scanf("%d",&m->time_otpravki);
        printf("vvedite vremya pribitiya\n");
        scanf("%d",&m->time_pribitiya);
        printf("vvedite den nedeli\n");
        scanf("%d",&m->den_nedeli);
    }
    printf("\nVvedite nujnii den nedeli\n");
    scanf("%d",&s);
    for (m=tr;m<tr+col;m++) {
        if (m->den_nedeli==s) {
            printf("punkt otpravki %s\n, punkt naznacheniya %s\n,vremya otpravki %d\n,vremya pribitiya  %d\n",
                m->punkt_otpravki,m->punkt_naznacheniya,m->time_otpravki,m->time_pribitiya);
            k++;
        }
    }
    if(k==0)
        printf("error");
    getch();
    return 0;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 15.09.2013, 20:48   #3
Alexandr-
Пользователь
 
Регистрация: 04.03.2013
Сообщений: 79
По умолчанию

Все работает. Спасибо большое за помощь.
Alexandr- вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передать указатель на указатель в функцию erro Общие вопросы C/C++ 3 29.10.2012 17:59
функция получающая указатель на структуру somwan Общие вопросы C/C++ 7 21.11.2011 21:30
Создать структуру Cathrin C# (си шарп) 3 05.11.2011 20:23
Указатель на структуру.Инициализация функцией. Aleksandr_Yanov Общие вопросы C/C++ 3 31.10.2010 16:36