Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: Помогите перегрузить операторы сравнения ( < > и.т.д.)  (Прочитано 34084 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Янус
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #30 : 17-01-2009 21:36 » 

int.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #31 : 17-01-2009 21:53 » 

вообще непонятно, что ты тут делаешь
Код:
		int a1=int(temp->a);
TempArray[i]=a1;///!!!!!

если тебе нужно следать
Код:
TempArray[i]=temp->a;

то и тип массива должен быть int*
« Последнее редактирование: 17-01-2009 22:03 от Алексей1153++ » Записан

Янус
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #32 : 17-01-2009 22:00 » 

Так пытаюсь сделать его int. Тоже не идет...

element** TempArray=new int [5]; на эту строчку ругается...
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #33 : 17-01-2009 22:05 » 

эхъ... Зачем пытаться его делать int ? Сделай как у меня в посте #26 было написано, и всё. Останется только тип data описать и сортировку массива указателей на него
Записан

Янус
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #34 : 17-01-2009 22:09 » 

так я все так и сделал, а тип Data он же " какие то данные" у меня int. 
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #35 : 17-01-2009 22:11 » 

Янус, так сделай
Код:
struct Data {
 int
};
Записан

Янус
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #36 : 17-01-2009 22:19 » 

Господа правильно ли я восприня предложенную здесь идею насчет временного массива ?
Код:
#include "stdafx.h"
#include <iostream>
using namespace std;
struct data
{
int a;
    data *next;

};
data *first=0;
data *cur=0;
int isempy()
{
return first==NULL;
}
void Add(int a1)
{
data *temp=new data;
temp->a=a1;
temp->next=first;
first=temp;
}
void vvod(int b)
{
int a;
for(int i=0;i<b;i++)
{
cout<<"a=";
cin>>a;
Add(a);
}
}
void print()
{
data* temp=first;

     while (temp!=0)     {

cout<<temp->a<<"->";

     temp=temp->next;
}

cout<<endl;
}
void sift(int *arrays,int L, int R)
{
int i,j;
int item;
i=L;
j=2*L;
item=arrays[L];
if(j<R && arrays[j]<arrays[j+1]) j++;
while (j<=R && item < arrays[j])
{
arrays[i]=arrays[j];
i=j;
j=2*j;
if(j<R && arrays[j]<arrays[j+1]) j++;
}
arrays[i]=item;
}
void heapsort(int *arrays,int size)
{
int L,R;
int item;
L=size/2;
R=size-1;
while (L>0)
{
      L--;
  sift(arrays,L,R);
}
while(R>0)
{
item=arrays[0];
arrays[0]=arrays[R];
arrays[R]=item;
R--;
sift(arrays,L,R);
}
}

int _tmain(int argc, _TCHAR* argv[])
{
int b;
cout<<"Enter quantity elements of spisok";
cin>>b;
vvod(b);
print();
    //tempmassiv(b);
int *arrays;
arrays=new int [b];
data* temp=first;
for(int i=0;temp && i <b;i++)
{
arrays[i]=temp->a;
temp=temp->next;

}

heapsort(arrays,b);
for(int i=0;temp && i<b;i++)
{
temp->a=arrays[i];
temp=temp->next;
}
cout << "Your array after sorting";
for(int i=0;i<b;i++)
{
cout << arrays[i];
}
print();
return 0;
}



Если да то возникает следующий вопрос: сортируем то мы опять значения а не ссылки, а потом готовый массв просто расталкиваем по возрастанию по ссылкам... Или я что-то не так воспринял ? (Программа хоть и выглядит ужасно но рабочая.)
« Последнее редактирование: 18-01-2009 01:36 от Янус » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #37 : 18-01-2009 06:27 » 

Янус,

во первых, ты не освободил память динамического массива, во вторых

Код:
struct data
{
int a;
    data *next; //это тут зачем ? Это же должно быть в элементе списка!

};
у тебя получился частный случай, который будет трудно развивать (если в данные придётся ещё что то добавить)

в третьих,
data *first=0;
data *cur=0;
 - зачем они у тебя глобальные то ?


в четвёртых, форматирование кода надо тренировать )

« Последнее редактирование: 18-01-2009 06:29 от Алексей1153++ » Записан

Янус
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #38 : 18-01-2009 12:04 » 

С кодом то все ясно (онписался в 5 утра) подправить его соответственно можно, но вот идея мне кажется не совсем та. Опять сортируем и меняем местами, информационную часть структуры, а не ссылки Не понял
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #39 : 18-01-2009 12:36 » 

Янус, это потому что ты не читаешь, что тебе пишут Улыбаюсь


я вот вообще у тебя не вижу

Код:

struct ListNode {
 struct Data *data;
 struct ListNode *next;
};
Записан

Янус
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #40 : 18-01-2009 12:54 » 

Не хочется показатся тупым, но все же возникает следующий вопрос: в массив то мы загоняем int (т.е. данные из структуры Data) и ЕГО сортируем... Вот что меня смущает. Если создавать массив как указано в Вашем посте то это не прокатывает(создаем массив для типа данных Data, а запихнуть туда пытаемся int).Если я не прав то пните меня в нужную сторону А черт его знает....
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #41 : 18-01-2009 13:07 » 

Янус, int загоняешь ты, а у меня в примере был указатель на данные Улыбаюсь
Записан

Янус
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #42 : 18-01-2009 13:19 » 

да признаю немного туповат.... Но если можно окажите пошаговую помощь. Создаем структуру и елементы списка:

Код:

struct data
{
int a;
};
struct ListNode
{
struct data *data;
struct ListNode *next;
struct ListNode *first;
};


Так правильно ?
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #43 : 18-01-2009 13:46 » 

Янус, это синтаксис C, в C++ не надо писать struct при объявлении переменных. Читай внимательней. Идентификатор типа не должен совпадать с идентификатором переменной.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #44 : 18-01-2009 17:48 » 

Янус,

первый шаг

Код:
//структура, содержащая некие данные
struct s_Data
{
int m_a;
};

//структура узла списка
struct s_ListNode
{
s_ListNode* m_pPrev_nz;//указатель на предыдущий узел (если не 0)
s_ListNode* m_pNext_nz;//указатель на следующий узел (если не 0)

s_Data* m_pData;//указатель на экземпляр данных, связанный с этим узлом

s_ListNode() : m_pPrev_nz(0), m_pNext_nz(0), m_pData(0)
{
}
};


« Последнее редактирование: 18-01-2009 17:50 от Алексей1153++ » Записан

Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #45 : 19-01-2009 06:22 » 

Алексей1153++, лучше писать не 0, а NULL.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #46 : 19-01-2009 08:21 » 

да это кто как привык )  Лично мне нравится 0
Записан

Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #47 : 19-01-2009 09:43 » 

Алексей1153++, это я знаю. Я говорю, что семантически (для читабельности кода) лучше писать NULL. Особенно это касается начинающих в программировании, которые путаются в типах данных.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #48 : 19-01-2009 10:12 » 

dimka, можно подумать, они уже не путают 0 и NULL Улыбаюсь И легко напишут int i=NULL; 

особого смысла в этом не вижу. И вряд ли кто то переопределит NULL (это я про разработчиков). Ну а путаться в "тип" и "указатель на тип" - это случай такой, что надо сразу это нагонять...
« Последнее редактирование: 19-01-2009 10:18 от Алексей1153++ » Записан

Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines