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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2014, 14:33   #1
иришка954
Новичок
Джуниор
 
Регистрация: 18.01.2014
Сообщений: 1
По умолчанию Работа со структурами!(Си ++)

Описать структуру с именем STUDENT, содержащую следующие поля:
• фамилия и инициалы;
• номер группы;
• успеваемость (массив из пяти элементов).
Написать программу, выполняющую следующие действия:
• ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT;
• упорядочивание записей алфавиту;
• вывод на дисплей фамилий и номеров групп для всех студентов, имеющих хотя бы одну оценку 2;
• если таких студентов нет, вывести соответствующее сообщение.

Помогите пжл упорядочить по алфавиту
Код:
#include <iostream>
#include <stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include <string.h>
#include <time.h>
#include <windows.h>
using namespace std;
struct STUDENT
{
char FIO[20];
char nom[20];
double usp[5];
void print(){std:: cout << FIO <<std::endl;}
//char sot;
};
void get(STUDENT &stud)
{
double sum = 0;
cout << "имя студента:"<< "\t";
cin >> stud.FIO;
cout << endl << "номер группы:"<< "\t";
cin >> stud.nom;
cout << endl << "оценка" << endl;
for ( int i = 0; i < 4; i++)
{
	stud.usp[i] = 1+rand()%5;
	cout << stud.usp[i] << "\t";
}
cout<<"\n\n";
}
void show(STUDENT &stud)
{
	STUDENT  tempR, a[4];
	for (int i=0;i<3;i++)
	{ 
		for (int j=i+1;i<4;j++)
		{
			if (a[i].FIO < a[j].FIO) 
			{
				tempR = a[i];
				a[i] = a[j];
				a[j] = tempR;
			}
		}
	} 
	// вывести массив записей на экран
           for (int i=0;i<4;i++) 
           {
               cout<<a[i].FIO<< " " << endl;
           }
}
void show(STUDENT stud[])
{
int flag = 0;
for ( int i = 0; i < 3; i++)
{
for(int j=0;j<4;j++) 
{
if((int) stud[i].usp[j] == 2)
{
flag = 1;
cout << "фио\t" << stud[i].FIO << "\t№\t" << stud[i].nom << endl;
}
}
}

if( flag == 0)
cout << "студентов нет"; 
}
int main()
{

SetConsoleCP(1251);
SetConsoleOutputCP(1251);
STUDENT stud[10];
for( int i = 0; i< 3 ; i++)
{
cout << "\nСтудент № " << i << endl;
get(stud[i]);
}
show(stud);
cout<< endl;
system("pause");
return 0;
}

Последний раз редактировалось Stilet; 20.01.2014 в 16:42.
иришка954 вне форума Ответить с цитированием
Старый 20.01.2014, 15:21   #2
nikolay1982
Пользователь
 
Регистрация: 31.12.2013
Сообщений: 47
По умолчанию

Использую фукцию qsort(libc).
Только сначала объяви фунцию student_compare:
Примерно так:
Код:
int student_compare(const void *s1,const void *s2 ){
STUDENT *stud1,*stud2;
stud1=(STUDENT*)s1;
stud2=(STUDENT*)s2;
return strcmp(stud1->FIO,stud2->FIO);
}
Применение:
qsort(stud_array,stud_array_size,si zeof(STUDENT),student_compare);
В данном случае -
qsort(stud,3,sizeof(STUDENT),studen t_compare);
Не уверен если мой код сработает.

Можно пузырьком сделать.
email: nikolai-isipchuk@mail.ru
ICQ:211861038

Последний раз редактировалось Stilet; 20.01.2014 в 16:42.
nikolay1982 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со структурами ( С++) Yourec09 Помощь студентам 1 06.01.2014 16:07
Работа со структурами (C++) DragoonSki Помощь студентам 6 03.03.2013 02:00
Работа со структурами Infini Visual C++ 0 02.03.2013 13:22
[C++] Работа со структурами... max382 Помощь студентам 30 05.05.2011 15:56
C++ Работа со структурами Ekatharina Помощь студентам 0 18.01.2010 19:25