Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите написать программу по С++, методом пузырька с простым алгоритмом 
:(
    Опции темы
LordNever
Дата 29.1.2006, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 29.1.2006

Репутация: нет
Всего: нет



Пожалуйста напишите прогу ?
Задание выглядит так:
Написать программу, которая подводит итоги олимпийских игр. Прога должна получить от пользователя число медалей разного достоинства, завоеваное каждой командой учасницей, вычислить обшее кол-во медалей и соответствуюшее ему число очков, и после етого упорядочить список (методом пузырька с простым алгоритмом) в соответствии с набранным количеством очков. Кол-во очков вычисляется по следуюшему правилу: за золотую медаль команда получает семь очков, за серебрянную - шесть, за бронзовую - пять очков, Сортировку оформить в виде функции.
Плиз напишите как моно скорее!!! Желательно, даже нужно седня (29.01.06) . Я буду тут и ночью! smile
PM MAIL   Вверх
Fixin
Дата 29.1.2006, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 5
Всего: 18



в каком виде вводится информация?
PM MAIL ICQ   Вверх
LordNever
Дата 29.1.2006, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 29.1.2006

Репутация: нет
Всего: нет



вся информация вводится пользователем( ну там скоко команд ,скоко они получили медалей и т.д.
PM MAIL   Вверх
Fixin
Дата 29.1.2006, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 5
Всего: 18



Код

#include <conio.h>
#include <iostream>

using namespace std;
enum Marks{COPPERY = 5, SILVER, GOLD};

typedef class T_TEAM
{
private:
    int num_of_gold_medal;
    int num_of_silver_medal;
    int num_of_coppery_medal;
    int mark;
    int team_number;
public:
    T_TEAM()
    {
        num_of_gold_medal = 0;
        num_of_silver_medal = 0;
        num_of_coppery_medal = 0;
        mark = 0;
        team_number = 0;
    };
    void SetValue(int value, int type)
    {
        if (type == GOLD)
            num_of_gold_medal = value;
        if (type == SILVER)
            num_of_silver_medal = value;
        if (type == COPPERY)
            num_of_coppery_medal = value;
        mark =  num_of_gold_medal*GOLD+
                num_of_silver_medal*SILVER+
                num_of_coppery_medal*COPPERY;
    }
    void SetTeamNumber(int num)
    {
        team_number = num;
    }
    int GetTeamNumber()
    {
        return team_number;
    }
    int GetMark()
    {
        return mark;
    }
} TEAM;

void Sort(TEAM*, int);

void main()
{
    int NumOfTeam = 1;
    int NumOfGold = 0, NumOfSilver = 0, NumOfCoppery = 0;
    int temp, i;
    do {
        if (NumOfTeam <= 0)
            cout << "Entered value is wrong. Try again." << endl;
        cout << "Enter number of teams: ";
        cin >> NumOfTeam;
    } while (NumOfTeam <= 0);
    TEAM * RealTeam = new TEAM[NumOfTeam];
    for (i = 0; i < NumOfTeam; i++)
    {
        RealTeam[i].SetTeamNumber(i+1);
        cout << "Enter number of gold medals in team " << i+1 << ": ";
        cin >> temp;
        RealTeam[i].SetValue(temp, GOLD);
        NumOfGold += temp;
        cout << "Enter number of silver medals in team " << i+1 << ": ";
        cin >> temp;
        RealTeam[i].SetValue(temp, SILVER);
        NumOfSilver += temp;
        cout << "Enter number of coppery medals in team " << i+1 << ": ";
        cin >> temp;
        RealTeam[i].SetValue(temp, COPPERY);
        NumOfCoppery += temp;
        cout << "==========" << endl;
    }
    cout << "=//=//=//=   Totalics    //=//=//=//" << endl;
    cout << "Full number of gold medals: " << NumOfGold << ". Total mark: " << NumOfGold*GOLD << endl;
    cout << "Full number of silver medals: " << NumOfSilver << ". Total mark: " << NumOfSilver*SILVER << endl;
    cout << "Full number of coppery medals: " << NumOfGold << ". Total mark: " << NumOfCoppery*COPPERY << endl;
    Sort(RealTeam, NumOfTeam);
    cout << "******************" << endl;
    cout << "Total results, sorted by marks: " << endl;
    for (i = 0; i < NumOfTeam; i++)
    {
        cout << "Command number: " << RealTeam[i].GetTeamNumber() << ". Mark: " << RealTeam[i].GetMark() << ".\n";
    }
    delete[] RealTeam;    
}

void Sort(TEAM* RealTeam, int NumOfTeam)
{
    TEAM Temp;
    int flag;
    do {
        flag = 0;
        for (int i = 0; i < NumOfTeam - 1; i++)
        {
            if (RealTeam[i].GetMark() < RealTeam[i+1].GetMark())
            {
                flag = 1;
                Temp = RealTeam[i];
                RealTeam[i] = RealTeam[i+1];
                RealTeam[i+1] = Temp;
            }
        }
    } while (flag);
}

PM MAIL ICQ   Вверх
Бегемот
Дата 29.1.2006, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 26.1.2005
Где: На границе Европы и Азии

Репутация: 2
Всего: 3



Код

#include<iostream.h>
#include<conio.h>
struct DataComand
{
   char NameComand[10]; //название команды
   int Gold;            // количество золотых медалей
   int Silber;          // количество серебряных медалей
   int Bronze;          // количество бронзовых медалей
   int ColMedal;        // общее количество медалей
   int ColScore;        // количество очков
};
// Сортировка команд
void BubbleSort(DataComand* Comand, int ColComand)
{
   DataComand Temp;
   int i,j;
   for(j=0; j<ColComand-1; j++)
      for (i=0; i<ColComand-1; i++)
          if (Comand[i].ColScore < Comand[i+1].ColScore)
         {
             Temp = Comand[i];
            Comand[i] = Comand[i+1];
            Comand[i+1] = Temp;
         }
}
// Вывод списка команд на экран
void Display(DataComand* Comand, int ColComand)
{
   cout << "--------------------------------------------------" << endl;
   cout << "N\t\t" << "G\t" << "S\t" << "B\t" << "C\t" << "S\t" << endl;
   cout << "--------------------------------------------------" << endl;
   for(int i=0; i<ColComand; i++)
   {
      cout << Comand[i].NameComand << "\t\t";
      cout << Comand[i].Gold << "\t";
      cout << Comand[i].Silber << "\t";
      cout << Comand[i].Bronze << "\t";
      cout << Comand[i].ColMedal << "\t";
      cout << Comand[i].ColScore << endl;
   }
   cout << "--------------------------------------------------" << endl;
}

void main()
{
   int ColComand;
   cout << "Введите количество команд: ";
   cin >>ColComand;
   // создаём массив структур размерностью ColComand
   DataComand *Comand = new DataComand[ColComand];
   // ввод данных и подсчет количества медалей и очков для каждой команды
   for(int i=0; i<ColComand; i++)
   {
      cout << "Введите название команды: ";
      cin >> Comand[i].NameComand;
      cout << "Введите количество золотых медалей: ";
      cin >> Comand[i].Gold;
      cout << "Введите количество серебряных медалей: ";
      cin >> Comand[i].Silber;
      cout << "Введите количество бронзовых медалей: ";
      cin >> Comand[i].Bronze;
      cout << endl;
      Comand[i].ColMedal = Comand[i].Gold + Comand[i].Silber + Comand[i].Bronze;
      Comand[i].ColScore = Comand[i].Gold*7 + Comand[i].Silber*6 + Comand[i].Bronze*5;
   }
   // Выводим исходный спиcок команд
   cout << "Исходный спиcок команд" << endl;
   Display(Comand, ColComand);
   // Сортируем массив
   BubbleSort(Comand, ColComand);
   cout << endl;
   // Выводим отсортированый спиcок команд
   cout << "Отсортированый спиcок команд" << endl;
   Display(Comand, ColComand);
   // Освобождаем выделенную память
   delete[] Comand;
   // Ждёмс....
   getch();
}

Добавлено @ 22:02
Fixin, упс........

Это сообщение отредактировал(а) Бегемот - 29.1.2006, 21:56
PM MAIL   Вверх
Бегемот
Дата 29.1.2006, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 26.1.2005
Где: На границе Европы и Азии

Репутация: 2
Всего: 3



Fixin, а я подумал, что необходимо посчитать общее количество медалей для каждой команды!
PM MAIL   Вверх
Fixin
Дата 30.1.2006, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 5
Всего: 18



Цитата(Бегемот @ 29.1.2006, 22:11 Найти цитируемый пост)

Fixin, а я подумал, что необходимо посчитать общее количество медалей для каждой команды

Это уж он разбирется.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0450 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.