Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проблема / 9 сообщений из 9, страница 1 из 1
14.02.2006, 12:44
    #33543215
cadge
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема
есть программа:


#include <iostream>
using namespace std;
#include <stdio.h>
struct students
{
char name[25];
int age;
float average;
float schs;
char add[200];
};
students fill_structs (students stu_data)
{
cout << " Введите имя студента: ";
gets (stu_data.name);
cout<<"Введите возраст студента: ";
cin>>stu_data.age;
cout<<"Введите средний балл студента: ";
cin>>stu_data.average;
cout<<"Введите размер получаемой стипендии студентом: ";
cin>>stu_data.schs;
cout<<"Введите домашний адрес студента: ";
gets(stu_data.add);
return stu_data;
}
print_data (students stu_data)
{
cout<<"Имя: "<<stu_data.name<<endl<<"Возраст: "<<stu_data.age<<endl<<"Средний балл: "<<stu_data.average<<endl<<
"Размер стипендии: "<<stu_data.schs<<endl<<"Домашний адрес: "<<stu_data.add<<endl;
return 0;
}
main()
{ students student1, student2;
student1 = fill_structs (student1);
student2 = fill_structs (student2);
cout << " \n\nИнформациЯ о студентах:\n\n";
print_data (student1);
print_data (student2);
return 0;
}



при запуске выдается ошибка. Если studen1, student2 инициализировать в главной функции перед вызовом функций, то все работает. Т.к. структура students глобальная, то убирая из формальных параметров функции структуру и не передавая ее в функцию тоже все будет работать. Но нужно чтобы работало все именно так как в тексте. Как избавиться от ошибки, не инициализируя students и не убирая stu_data?
Прошу помощи.
Заранее благодарен.
...
Рейтинг: 0 / 0
14.02.2006, 13:21
    #33543372
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема
cadgeесть программа....

я бы сделал вот тут референс (ну енто так к слову)...

Код: plaintext
1.
students fill_structs (students& stu_data)

а компилятор заткнёться, если вы реализуете в структуре следующую батву...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
struct students			
{
    students(void) {};

    char	name[ 25 ];
    int   	age;
    float	average;
    float   schs;
    char    add[ 200 ];
};

то бишь конструктор по умолчанию...

с уважением
(круглый)
...
Рейтинг: 0 / 0
14.02.2006, 13:22
    #33543380
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема
kolobok0я бы сделал вот тут референс (ну енто так к слову)...

опс...поспешил, сорьки...дико извиняюсь..

(круглый)
...
Рейтинг: 0 / 0
14.02.2006, 13:32
    #33543429
Станислав C.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема
cadgeесть программа:


#include <iostream>
using namespace std;
#include <stdio.h>
struct students
{
char name[25];
int age;
float average;
float schs;
char add[200];
};
students fill_structs (students stu_data)
{
cout << " Введите имя студента: ";
gets (stu_data.name);
cout<<"Введите возраст студента: ";
cin>>stu_data.age;
cout<<"Введите средний балл студента: ";
cin>>stu_data.average;
cout<<"Введите размер получаемой стипендии студентом: ";
cin>>stu_data.schs;
cout<<"Введите домашний адрес студента: ";
gets(stu_data.add);
return stu_data;
}
print_data (students stu_data)
{
cout<<"Имя: "<<stu_data.name<<endl<<"Возраст: "<<stu_data.age<<endl<<"Средний балл: "<<stu_data.average<<endl<<
"Размер стипендии: "<<stu_data.schs<<endl<<"Домашний адрес: "<<stu_data.add<<endl;
return 0;
}
main()
{ students student1, student2;
student1 = fill_structs (student1);
student2 = fill_structs (student2);
cout << " \n\nИнформациЯ о студентах:\n\n";
print_data (student1);
print_data (student2);
return 0;
}



при запуске выдается ошибка. Если studen1, student2 инициализировать в главной функции перед вызовом функций, то все работает. Т.к. структура students глобальная, то убирая из формальных параметров функции структуру и не передавая ее в функцию тоже все будет работать. Но нужно чтобы работало все именно так как в тексте. Как избавиться от ошибки, не инициализируя students и не убирая stu_data?
Прошу помощи.
Заранее благодарен.
Что-то мне подсказывает, что здесь надо использовать указатели
Например, так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
#include <iostream>
#include <stdio.h>
#include <conio.h>

using namespace std;

struct students			
{  
    char	name[ 25 ];
    int   	age;
    float	average;
    float   schs;
    char    add[ 200 ];
};				

students *fill_structs (students *stu_data)
{  
	cout << " Введите имя студента: ";
        cin>>stu_data->name;	
	cout<<"Введите возраст студента: ";
	cin>>stu_data->age;
	cout<<"Введите средний балл студента: ";
	cin>>stu_data->average;
	cout<<"Введите размер получаемой стипендии студентом: ";
	cin>>stu_data->schs;
	cout<<"Введите домашний адрес студента: ";
	cin>>stu_data->add;    
	return stu_data;
}

int print_data (students *stu_data)
{  
	cout<<"Имя: "<<stu_data->name<<endl<<"Возраст: "<<stu_data->age<<endl<<"Средний балл: "<<stu_data->average<<endl<<
		"Размер стипендии: "<<stu_data->schs<<endl<<"Домашний адрес: "<<stu_data->add<<endl<<endl<<endl;	
   return  0 ;
}

int main()
{  students student1, student2;
   fill_structs (&student1);
   fill_structs (&student2);
   cout << " \n\nИнформациЯ о студентах:\n\n";
   print_data (&student1);
   print_data (&student2);
   getch();
   return  0 ;
}
...
Рейтинг: 0 / 0
14.02.2006, 14:20
    #33543613
bender2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема
Надо стркуктуру передавать по ссылке, то есть, чтобы фукнция могла изменять её значение, поэтому надо через указатели работать, то есть вызывать функцию с & перед students
...
Рейтинг: 0 / 0
15.02.2006, 09:29
    #33545316
cadge
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема
Очень благодарен за оперативные ответы
...
Рейтинг: 0 / 0
15.02.2006, 09:42
    #33545350
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема
Должно быть

students fill_structs (students &stu_data)
или
students fill_structs (students *stu_data)
...
Рейтинг: 0 / 0
15.02.2006, 09:43
    #33545354
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема
students fill_structs (students &stu_data) - return не нужен.
...
Рейтинг: 0 / 0
15.02.2006, 13:59
    #33546354
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема
MasterZivstudents fill_structs (students &stu_data) - return не нужен.

человек задавал вопрос про РУГАНЬ КОМПИЛЯТОРА...
правильный ответ...приведён мною выше...привожу весь рабочий код...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
#include <iostream>
using namespace std;
#include <stdio.h>
struct students 
{
	students(void) {};
	char name[ 25 ];
	int age;
	float average;
	float schs;
	char add[ 200 ];
};

students fill_structs (students stu_data)
{ 
	cout << " Введите имя студента: ";
	gets (stu_data.name); 
	cout<<"Введите возраст студента: ";
	cin>>stu_data.age;
	cout<<"Введите средний балл студента: ";
	cin>>stu_data.average;
	cout<<"Введите размер получаемой стипендии студентом: ";
	cin>>stu_data.schs;
	cout<<"Введите домашний адрес студента: ";
	gets(stu_data.add); 
	return stu_data;
}
int print_data (students stu_data)
{ 
	cout<<"Имя: "<<stu_data.name<<endl<<"Возраст: "<<stu_data.age<<endl<<"Средний балл: "<<stu_data.average<<endl<<
	"Размер стипендии: "<<stu_data.schs<<endl<<"Домашний адрес: "<<stu_data.add<<endl; 
	return  0 ;
}

int _tmain(int argc, _TCHAR* argv[])
{


	students student1, student2;
	student1 = fill_structs (student1);
	student2 = fill_structs (student2);
	cout << " \n\nИнформациЯ о студентах:\n\n";
	print_data (student1);
	print_data (student2);
}

(круглый)
ЗЫ
Ссылки, указатели и прочая лабуда тут не причём (мона отнести к оптимизации). Всё и так дышит.по крайней мере компилиться, запускаеться.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проблема / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]