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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка списка .. не фурычит что то 
:(
    Опции темы
Jugger
Дата 13.3.2011, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот такой код
Он работает, но список не сортирует, а выводит как есть
Функции ввода вывода и max работают как надо, а вот sort безрезультатно
В чём ошибка ?

Код

#include "stdafx.h"
#include "iostream"
using namespace std;
#include <stdlib.h>
#define n 10





      
    class element {
    public : 
        element(int q){
            x=q;
            next=0;
        };
        int x;
        element* next;
        ~element();
    } ;

    element * perv, * posl;

    void addtolist(int x){
        element * t =posl;

             posl=new element (x);
                  
              if(perv==0) perv=posl;
               else t->next=posl;
        
    };

    void printlist(element * perv){
        element * t =perv;
        while(t!=0){
            cout<<" " <<t->x;
            t=t->next;
        };
    } ;

    int max(element * perv){
        element * t=perv;
        int max=-32768;
        while(t!=0){
            max=t->x>max?t->x:max;
            t=t->next;
        
        };
        return max;
    };

    void sort(element * perv){
        
        int rc,i=0,tmp,m;
        element * t;
        rc=8*sizeof(element);
        while(i+1<(posl-perv)/rc){
            t=perv+i*rc;
            tmp=t->x;
            m=max(perv+i*rc);
            t->x=m;
            
            while(t!=0){

                t=t->next;                    
                if(t->x=m) { 
                    t->x=tmp; 
                    break;
                };
                
                
            };
            
            i++;
        };
        
        };

    int main(){
        system("cls");
        int e,i=0;
        while (i<n){
              cin>>e;
              
              addtolist(e);
          i++;
        };

        sort(perv);

        printlist(perv);

                system("getmac && pause");
        return 0;

    };


Это сообщение отредактировал(а) Jugger - 13.3.2011, 21:17
PM MAIL   Вверх
volatile
Дата 13.3.2011, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Jugger @  13.3.2011,  21:16 Найти цитируемый пост)
Он работает, но список не сортирует

Сомневаюсь что он работает.

Цитата(Jugger @  13.3.2011,  21:16 Найти цитируемый пост)
       ~element();

У вас неслинкуется.
Деструктор объявлен, но тела нет.

Дальше смотреть не стал, так как неровные отступы очень затрудняют дело.

PM MAIL   Вверх
Суровый
Дата 14.3.2011, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Jugger, для начала: 1) пожалуйста, не ставьте ";" после каждой закрывающей фигурной скобки, это неверный подход.
2) Или укажите тело деструктора или вообще уберите строчку ~element();
3) Честно скажу, что полностью алгоритм не разбирал, но в функции sort есть условие if(t->x=m) - может в этом ошибка?  smile 
PM MAIL   Вверх
xvr
Дата 28.3.2011, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(Jugger @  13.3.2011,  21:16 Найти цитируемый пост)
Код

        while(i+1<(posl-perv)/rc){
            t=perv+i*rc;
            m=max(perv+i*rc);
Это все работать не будет. Элементы списка располагаются в памяти не смежно (это все же не массив), так что передвигаться по списку прибавляя что то к указателю на элемент нельзя


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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