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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2011, 00:29   #1
ZasZas13
Пользователь
 
Регистрация: 20.12.2011
Сообщений: 10
По умолчанию Структура

Задание:Поля записи: фамилия участника соревнований по троеборью, год рождения, результаты в отдельных видах
Упорядочить список участников соревнований по убыванию сумм результатов, определить победителей в каждом виде.
Преподаватель говорит что нахожу победителей не правильно,даёт свои числа и правда не правильно находиться,максимум)помогите с максимумом!
#include "stdafx.h"
#include "conio.h"
#include "locale.h"
#include "stdio.h"
#include "string.h"
int _tmain(int argc, _TCHAR* argv[])
{bool flag;
int max0,max1,max2,max3;
const int nn=30;
struct stud
{
char fam[30];
int rogd[3];
int result[3];
int sum;
};

setlocale (0,"Rus");
stud a[nn],max;
int i,f,n,j;
char str[nn];
char m1,m2,m3,m4;
printf ("Введите кол-во записей ");
scanf ("%d",&n);
for (i=0;i<n;i++)
{
printf ("\nФамилия: ");
scanf("%s", a[i].fam);
printf("Дата рождения: число.месяц.год: ");
scanf("%d%c%d%c%d",&a[i].rogd[0],&m1,&a[i].rogd[1],&m2,&a[i].rogd[2]);
printf ("Результаты троеборья(1/2/3): ");
scanf ("%d%c%d%c%d", &a[i].result[0],&m3,&a[i].result[1],&m4,&a[i].result[2]);
a[i].sum=a[i].result[0]+a[i].result[1]+a[i].result[2];
printf ("Сумма баллов: %d\n", a[i].sum);
}
f=0;
do
{
f++;
flag=false;
for(i=0;i<(n-f);i++)
if (a[i].sum> a[i+1].sum)
{
max=a[i];
a[i]=a[i+1];
a[i+1]=max;
flag=true;
}
}
while(flag);
for (i=0;i<n;i++)
{
printf ("\nФамилия: %s", a[i].fam);
printf ("\tДата рождения: %d.%d.%d", a[i].rogd[0],a[i].rogd[1],a[i].rogd[2]);
printf ("\tРезультаты троеборья(1/2/3): %d/%d/%d", a[i].result[0],a[i].result[1],a[i].result[2]);
printf ("\tСумма баллов: %d\n", a[i].sum);
}
max1=a[0].result[0];
max2=a[0].result[1];
max3=a[0].result[2];
for(i=0;i<n;i++)
{if(a[i].result[0]>max1)max1=a[i].result[0];
if(a[i].result[1]>max2)max2=a[i].result[1];
if(a[i].result[2]>max3)max3=a[i].result[2];
}
printf ("\n");
for (i=0;i<n;i++)
if (a[i].result[0]==max1)
{
printf ("\nМаксимальное количество баллов (%d) по 1 состязанию набрал(ли):",max1);
printf ("\nФамилия: %s", a[i].fam);
printf ("\tДата рождения: %d.%d.%d", a[i].rogd[0],a[i].rogd[1],a[i].rogd[2]);
printf ("\tРезультаты троеборья(1/2/3): %d/%d/%d", a[i].result[0],a[i].result[1],a[i].result[2]);
printf ("\tСумма баллов: %d\n", a[i].sum);
}
printf ("\n");
for (i=0;i<n;i++)
if (a[i].result[1]==max2)
{
printf ("\nМаксимальное количество баллов (%d) за 2 состязанию набрал(ли):",max2);
printf ("\nФамилия: %s", a[i].fam);
printf ("\tДата рождения: %d.%d.%d", a[i].rogd[0],a[i].rogd[1],a[i].rogd[2]);
printf ("\tРезультаты троеборья(1/2/3): %d/%d/%d", a[i].result[0],a[i].result[1],a[i].result[2]);
printf ("\tСумма баллов: %d\n", a[i].sum);
}
printf ("\n");
for (i=0;i<n;i++)
if (a[i].result[2]==max3)
{
printf ("Максимальное количество баллов (%d) за 3 состязанию набрал(ли):",max3);
printf ("\nФамилия: %s", a[i].fam);
printf ("\tДата рождения: %d.%d.%d", a[i].rogd[0],a[i].rogd[1],a[i].rogd[2]);
printf ("\tРезультаты троеборья(1/2/3): %d/%d/%d", a[i].result[0],a[i].result[1],a[i].result[2]);
printf ("\tСумма баллов: %d\n", a[i].sum);
}

getch();
return 0;
}
ZasZas13 вне форума Ответить с цитированием
Старый 29.12.2011, 13:35   #2
ElectroMent
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 27
По умолчанию

замени цикл сортировки

for( int j = 0; j < n; j++)
{
for( int i = j + 1; i < n; i++ )
{
if( a[ j ].sum < a[ i ].sum )
{
std::swap( a[ i ], a[ j ] );
}
}
}
//maximum element a[ 0 ]
//minimum element a[ n - 1 ]

вместо своего

f=0;
do
{
f++;
flag=false;
for(i=0;i<(n-f);i++)
if (a[i].sum> a[i+1].sum)
{
max=a[i];
a[i]=a[i+1];
a[i+1]=max;
flag=true;
}
}
while(flag);
ElectroMent вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
структура _dmk Общие вопросы C/C++ 0 25.12.2011 14:56
Структура С++ Defender42 Помощь студентам 9 09.04.2011 12:45
Структура DRELORD Помощь студентам 0 16.05.2010 22:53
Структура Superlotles Помощь студентам 5 14.09.2009 23:29
структура cr1mson Общие вопросы C/C++ 3 14.01.2009 18:08