IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> Лексикографическая сортировка числовых векторов, BC++
KerK
сообщение 17.11.2006 22:26
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 28
Пол: Мужской

Репутация: -  0  +


Вектор А=(А1,А2,…,Аn) считается лексикографически большим вектора В=(В1,В2,…,Вn), если существует k>=0 такое что Аi=Вi(i<=k),Ak+1>Bk+1. Составить программу лексикографической сортировки числовых векторов. При составлении программы сортировки использовать минимальную необходимую память и эффективные структуры данных.

Давал пост в разделе задачи Лексикографическая сортировка числовых векторов., мне помогли с заданием но реализация была на паскале... вот попробовал перевести в сишку... возникли вопросы.... в сишке ни разу не пробовал процедуры... правильно ли я написал? и нет под рукой книги или хелпа, хотелось бы узнать что дает в паскале команда inc, и как она должна выглядеть в С. Потом не совсем понял какая структура должна быть у программы на С. НАпример на паскале

...
...
procedure
main();
end;
Begin
End.

а как на си?

И посмотрите пожалуйста мой код.... где какие ошибки? и как продолжить главный модуль программы?


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


void SortAt(int low_bound,int up_bound,int sort_by)
main()
{
int i,j,t;

if (sort_by=len+1) exit;

for (i=1;i=up_bound-low_bound+1;i++)
for (j=low_bound;j=up_bound-1;j++)
if (vv[sorted[j]][sort_by]>vv[sorted[j+1]][sort_by])
{
t=sorted[j];
sorted[j]=sorted[j+1];
sorted[j+1]=t;
}

i=low_bound;
while (i<=up_bound)
{
j=i;
while (i<up_bound)&&(vv[sorted[j+1]][sort_by]=vv[sorted[j]][sort_by])
inc(j); //???????????????????
SortAt(i,j,sort_by+1);
i=i+1;
}
}

int vv[3][3];
int sorted[3];








 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 18.11.2006 22:51
Сообщение #2


Гость






Цитата
Я тут еще подправил.... помоему незачем писать лишний код...
А по-моему, ты ошибаешься.. Это совершенно не эквивалентные коды...

int LexSmaller(int x, int y)
//вернуть 1, если vv[x] лексикографичекси меньше, чем vv[y], и 0 в противном случае
{
for (int i = 0; i < len; ++i)
if (vv[x][i]<vv[y][i])
return 1; //лексикографически меньше
else return 0; //если отличий не нашли, значит вектора равны или ; возвращаем 0
}

Что произойдет, если vv[x][0] = vv[y][0]? Безо всяких сомнений функция вернет тебе 0, т.к. else относится только к результату сравнения if (vv[x][i]<vv[y][i])... Элементы равны, следовательно условие НЕ выполнилось, возвращен 0... Всё. Результат неверный... До второй итерации дело вообще не дойдет, хотя по идее если
vv[x][0] = vv[y][0], но vv[x][1] < vv[y][1] функция должна вернуть 1...

Тебе, кстати, компилятор должен давать Warning... Ты почему его игнорируешь?
 К началу страницы 
+ Ответить 

Сообщений в этой теме
KerK   Лексикографическая сортировка числовых векторов   17.11.2006 22:26
Michael_Rybak   Если тебе на сях надо было, ты б так и говорил, я ...   18.11.2006 2:14
KerK   #include <stdio.h> #include <conio.h...   18.11.2006 21:50
volvo   А по-моему, ты ошибаешься.. Это совершенно не экви...   18.11.2006 22:51
KerK   Вектор А=(А1,А2,…,Аn) считается лексикогра...   19.11.2006 1:09
Michael_Rybak   Представь себе, что векторы - это слова, а элемент...   19.11.2006 2:40
KerK   Представь себе, что векторы - это слова, а элемен...   19.11.2006 13:00
Michael_Rybak   :yes2: Честно говоря, я тебе уже ответил на ...   19.11.2006 13:06
KerK   :yes2: Честно говоря, я тебе уже ответил на этот...   19.11.2006 13:23
Michael_Rybak   Молодец. Жду вопросов ;) На всякий случай, на ...   19.11.2006 14:45
KerK   Молодец. Жду вопросов ;) На всякий случай, на па...   19.11.2006 23:57
Michael_Rybak   В паскале нумерация была с нуля, поэтому я написа...   20.11.2006 2:46
KerK   В паскале нумерация была с нуля, поэтому я написа...   20.11.2006 19:48
Michael_Rybak   Чем заменить пузырек? Вставкой? Лучше std::sort...   20.11.2006 21:54
KerK   Лучше std::sort'ом просто. Надо объявить комп...   20.11.2006 22:32
Michael_Rybak   А помоему лучше использовать :) stl - это стандарт...   20.11.2006 22:47
Гость   А помоему лучше использовать :) stl - это стандар...   21.11.2006 8:14
Michael_Rybak   Сверху (перед функцией) объявляешь такой класс st...   21.11.2006 12:16
Гость   сортировка идет по первым элементам вектора, если...   29.12.2006 10:08


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 22.07.2025 13:31
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"