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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2009, 21:50   #1
Olya90
Форумчанин
 
Аватар для Olya90
 
Регистрация: 16.03.2009
Сообщений: 125
Подмигивание Программа с структурами

Приветик всем!!
Вообщем у меня такая задачка:
С помощью структуры
Код:
struct pupil
{
char*name;
int age;
float rating
};
Нужно сделать чтобы пользователь с помощью меню мог вводить данные школьника а потом когда будет введено достаточно школьника, пользователь также с помощью меню мог найти школьников которым 13 лет и они имеют средний бал больше 4. Все ти дела нужно организовать функциями.
И еще вопрос правильно ли я сделала прогу на ввод школьников...
Код:
#include <cstdlib>
#include <iostream>

using namespace std;

struct pupil
{
char*name;
int age;
float rating;
};

void make_person()
{
	int Age; float rating_q; char Name[20];
	cout<<"Name?:";
	cin>>Name;
	cout<<"Age?:";
	cin>>Age;
	cout << "Rating?:";
	cin >>rating_q;
	pupil p;
	p.name=new char[strlen(Name)+1];
	strcpy(p.name,Name);
	p.rating=rating_q;
    p.age=Age;
}

int main(int argc, char *argv[])
{
int k;
do
{
cout<<"1. Form pupil\n";

cin>>k;
switch (k)
{
case 1: make_person(); break;
}
}
while (k!=0);


    system("PAUSE");
    return EXIT_SUCCESS;
}
Если помогла нажмите на весы
Olya90 вне форума Ответить с цитированием
Старый 24.04.2009, 22:10   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Школьника-то вы, вроде как, создаете. Только при выходе из функции он теряется.
Нужно либо делать массив школьников, либо список.
От того, как это будет выглядеть зависит и то, как будет выглядеть функция поиска.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 24.04.2009, 22:19   #3
Сергей089
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 214
По умолчанию

А если сделать так?

В главной функции вводите кол-во школьников. Потом создаете динамический массив, состоящий из pupil. В вашей функции поменять тип с void на pupil и в конце добавить return p. И в цикле элементам массива присваивать функцию.
Сергей089 вне форума Ответить с цитированием
Старый 25.04.2009, 14:53   #4
Olya90
Форумчанин
 
Аватар для Olya90
 
Регистрация: 16.03.2009
Сообщений: 125
По умолчанию

Я сделала как вы написали
Код:
#include <cstdlib>
#include <iostream>

using namespace std;

struct pupil
{
char*name;
int age;
float rating;
};

pupil make_person()
{
	int Age; float rating_q; char Name[20];
	cout<<"Name?:";
	cin>>Name;
	cout<<"Age?:";
	cin>>Age;
	cout << "Rating?:";
	cin >>rating_q;
	pupil p;
	p.name=new char[strlen(Name)+1];
	strcpy(p.name,Name);
	p.rating=rating_q;
    p.age=Age;
return p;
}

int main(int argc, char *argv[])
{

int n;
cout << "Number of pupils:";
cin>> n;    
pupil mas=new pupil[n];

int k;
do
{
cout<<"1. Form pupil\n";

cin>>k;
switch (k)
{
case 1: make_person(); break;
}
}
while (k!=0);


    system("PAUSE");
    return EXIT_SUCCESS;
}
а как правильно тогда сделать чтобы в цикле элементам массива присваивать функцию??
Если помогла нажмите на весы
Olya90 вне форума Ответить с цитированием
Старый 25.04.2009, 15:03   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Ну вот, вроде:
Код:
#include <cstdlib>
#include <iostream>

using namespace std;

struct pupil
{
char* name;
int age;
float rating;
};

pupil make_person()
{
	int Age;
 float rating_q;
 char Name[20];
	cout<<"Name?:";
	cin>>Name;
	cout<<"Age?:";
	cin>>Age;
	cout << "Rating?:";
	cin >>rating_q;
	pupil p;
	p.name=new char[strlen(Name)+1];
	strcpy(p.name,Name);
	p.rating=rating_q;
 p.age=Age;
return p;
}

int main(int argc, char *argv[])
{

int n,i=0;
cout << "Number of pupils:";
cin>> n;
pupil *mas=new pupil[n];

int k;
do
{
 cout<<"1. Form pupil\n";

 cin>>k;
 switch (k)
  {
  case 1: mas[i++] = make_person(); break;
  }
 } while (k!=0);

system("PAUSE");
return EXIT_SUCCESS;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 25.04.2009, 16:32   #6
Olya90
Форумчанин
 
Аватар для Olya90
 
Регистрация: 16.03.2009
Сообщений: 125
По умолчанию

Я вот немножко довела код до ума... Как думаете код нормальный ?? не сложный?
Код:
#include <cstdlib>
#include <iostream>

using namespace std;

struct pupil
{
char* name;
int age;
float rating;
};

pupil make_person()
{
	int Age;
 float rating_q;
 char Name[20];
	cout<<"Name?:";
	cin>>Name;
	cout<<"Age?:";
	cin>>Age;
	cout << "Rating?:";
	cin >>rating_q;
	pupil p;
	p.name=new char[strlen(Name)+1];
	strcpy(p.name,Name);
	p.rating=rating_q;
 p.age=Age;
return p;
}

void print_mas(int n, pupil *mas)
{
cout<<"Printig..."<<endl;
for(int count=1,i=0;i<n;i++,count++)
if(mas[i].age==13 && mas[i].rating>4)
cout<<"\nName:  "<<mas[i].name<<"\t"<<"Age:  "<<mas[i].age<<"\t"<<"Rating: "<<mas[i].rating<<endl;
}

int main(int argc, char *argv[])
{

int n,i=0;
cout << "Number of pupils:";
cin>> n;
pupil *mas=new pupil[n];
 for(int i=0;i<n;i++)
  mas[i] = make_person();

int k;
do
{
cout<<"1. Print Array\n";
cout<<"0. Exit\n";

cin>>k;
switch (k)
{
case 1: print_mas(n,mas); break;
}}
while (k!=0);

system("PAUSE");
return EXIT_SUCCESS;
}
Если помогла нажмите на весы
Olya90 вне форума Ответить с цитированием
Старый 25.04.2009, 16:35   #7
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Как думаете код нормальный ?? не сложный?
В функции make_person не обязательно объявлять 3 дополнительные переменные. Можно сразу писать в поля структуры.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 25.04.2009, 16:39   #8
Olya90
Форумчанин
 
Аватар для Olya90
 
Регистрация: 16.03.2009
Сообщений: 125
По умолчанию

А не могли бы показать...
Если помогла нажмите на весы
Olya90 вне форума Ответить с цитированием
Старый 25.04.2009, 16:47   #9
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
pupil make_person()
{
	pupil p;
	cout<<"Name?: ";
	p.name=new char[strlen(Name)+1];
	cin>>p.name;
	cout<<"Age?: ";
	cin>>p.age;
	cout << "Rating?: ";
	cin >>p.rating;
return p;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 25.04.2009, 17:01   #10
Olya90
Форумчанин
 
Аватар для Olya90
 
Регистрация: 16.03.2009
Сообщений: 125
По умолчанию

ОК спасибо !!!
Если помогла нажмите на весы
Olya90 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C++] Работа со структурами... max382 Помощь студентам 30 05.05.2011 15:56
Помогите с задачой со структурами на С++. Many man Помощь студентам 1 12.04.2009 11:45
работа со структурами - дерево Nostalgia Паскаль, Turbo Pascal, PascalABC.NET 0 24.03.2009 19:45
Работа с массивами и структурами (С/С++) Aliance Помощь студентам 3 28.10.2008 22:28
Помогите со структурами в Delphi profi Помощь студентам 2 24.08.2008 12:15