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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Создание и сортировка массива классов, Помогите с созданием массива классов!!! 
:(
    Опции темы
NFL
  Дата 5.5.2009, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

#include "stdafx.h"
#include <iostream>
using namespace std;
#include <cstring>
#include <iomanip>

class myclass
{
    char sport[10];
    int uch;
    double pts;
    char fwin[10];
public:
    void getdata(char sport1[10], int uch1, char fwin1[10], double pts1)
    {
        strcpy(sport, sport1);
        uch=uch1;
        strcpy(fwin, fwin1);
        pts=pts1;
    }
        void showdata()
    {
        cout << setw(15) << sport << setw(3) << uch << setw(10) << fwin 
            << setw (5) << points;
    }
};


Компилятор ругается на
Код

strcpy(sport, sport1);


h:\documents and settings\admin\мои документы\visual studio 2005\projects\cl_laba\cl_laba\cl_laba.cpp(16) : warning C4996: 'strcpy' was declared deprecated
        h:\program files\microsoft visual studio 8\vc\include\string.h(73) : see declaration of 'strcpy'

(MS Visual Studio 2005)

В чем тут проблема???

И еще.... Нужно с этим классом создать массив классов, и его отсортировать по заданному полю... 

Надеюсь на помощь smile 

Это сообщение отредактировал(а) NFL - 5.5.2009, 11:14
PM MAIL   Вверх
azesmcar
Дата 5.5.2009, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



NFL

Во первых - это не ошибка а варнинг.
Во вторых - в ней все сказано smile функция strcpy устарела smile 
дурацкии варнинги студии, можете заменить на strcpy_s, но это нестандартная функция. Можно отключить эти варнинги если сильно нервирует
Код

#pragma warning(disable:4996)

PM   Вверх
zim22
Дата 5.5.2009, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

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



Цитата(NFL @  5.5.2009,  11:11 Найти цитируемый пост)
Нужно с этим классом создать массив классов,

Код

myclass array[256]; // создал

Цитата(NFL @  5.5.2009,  11:11 Найти цитируемый пост)
 и его отсортировать по заданному полю...

функция std::sort из <algorithm> c функтором в качестве третьего параметра подойдёт. 


--------------------
PM MAIL   Вверх
NFL
Дата 5.5.2009, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(zim22 @  5.5.2009,  11:53 Найти цитируемый пост)
функция std::sort из <algorithm>

Слишком сильно для студента первого курса smile 

А strcpy_s, пробовал, но тоже какие то ошибки, типа "не хватает 2х аргументов"


Цитата(zim22 @  5.5.2009,  11:53 Найти цитируемый пост)
myclass array[256]; // создал



Обращаться, я так понимаю, через точку к полям? smile 

ЗЫ: И сортировку можно прямо в main делать?
PM MAIL   Вверх
NFL
Дата 5.5.2009, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

#include "stdafx.h"
#include <iostream>
using namespace std;
#include <cstring>
#include <iomanip>
#pragma warning(disable:4996)
#define n 3
class myclass
{
    char sport[10];
    int uch;
    double pts;
    char fwin[10];
public:
    void getdata(char sport1[10], int uch1, char fwin1[10], double pts1)
    {
        strcpy(sport, sport1);
        uch=uch1;
        strcpy(fwin, fwin1);
        pts=pts1;
    }
        void showdata()
    {
        cout << setw(15) << sport << setw(3) << uch << setw(10) << fwin 
            << setw (5) << pts << endl;
    }
};

int main()
{
    myclass t[n];
    int cu;
    char sp[10], fp[10];
    double pt;
    for (int i=0;i<n;i++)
    {
        cout << "Vvedite sport\n";
        cin >> sp;
        cout << "vvedite kol. uchastnikov\n";
        cin >> cu;
        cout << "Vvedite familiyu pobeditelya\n";
        cin >> fp;
        cout << "Vvedite ochki\n";
        cin >> pt;
        t[i].getdata(sp, cu, fp, pt);
    }
    for (int i=0;i<n;i++)
    {
        t[i].showdata();
    }
    system ("pause");
    return 0;
}


Это все дело работает на УРА smile 

Подскажите, пжл, еще - как сделать сортировку массива myclass t[n] по полю uch???

Желательно с использованием массива указателей, но буду благодарен за любой вариант smile 
PM MAIL   Вверх
Cheloveck
Дата 5.5.2009, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

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



Сортировка Шелла
Сортировка вставками
Сортировка выбором
Сортировка перемешиванием
Сортировка подсчётом
Сортировка пузырьком

Это наиболее популярные алгоритмы сортировки массива. Чтобы ими воспользоваться тебе нужно у себя в классе перегрузить операторы > и/или <. 

P.S. Если шаблон студенту первого курса не подходит, то пусть сортирует как все))))

Это сообщение отредактировал(а) Cheloveck - 5.5.2009, 12:54


--------------------
user posted image
PM Jabber   Вверх
NFL
Дата 5.5.2009, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Cheloveck, мне то подходит, а преподу - НЕД)))

Сортировки эти все я знаю - я спрашиваю, как передать в функцию массив классов=)
Ну ща шо нить прокурю)))
PM MAIL   Вверх
zim22
Дата 5.5.2009, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

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



Цитата(NFL @  5.5.2009,  15:37 Найти цитируемый пост)
я спрашиваю, как передать в функцию массив классов=)

Код

void fcn(myclass *arr) { }
myclass arr[256];
fcn(arr);



--------------------
PM MAIL   Вверх
gosn1ck
Дата 6.5.2009, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(NFL @ 5.5.2009,  15:37)
как передать в функцию массив классов=)

эти типы не абстрактные, они столь же реальны, как int и float  smile 
PM MAIL ICQ   Вверх
Cheloveck
Дата 7.5.2009, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

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



Имя массива есть указатель на его первый элемент, передавай указатель.

Добавлено через 1 минуту и 14 секунд
Цитата

как передать в функцию массив классов=)

И не "массив классов", а массив объектов  класса o_O


--------------------
user posted image
PM Jabber   Вверх
azesmcar
Дата 7.5.2009, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



Цитата

Имя массива есть указатель на его первый элемент, передавай указатель.

Константный указатель - если быть точным (по стандарту имя массива - rvalue)
Цитата

An lvalue or rvalue of type “array ofN T” or “array of unknown bound of T” can be converted to an rvalue
of type “pointer to T.” The result is a pointer to the first element of the array.


Это сообщение отредактировал(а) azesmcar - 7.5.2009, 08:43
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

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


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

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

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

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


 




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


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

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