реклама на сайте
подробности

 
 
> QSORT
Евгений Германов...
сообщение Oct 21 2007, 09:46
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Народ!Окажите помощ.Не могу одолеть функцию qsort.что бы не пробовал,кроме ошибок ничего.
#include <stdlib.h>
int nums[5]={ 2,3,1,5,4};

int compar(const void *arg1,const void *arg2);


{
if ( * (int *) arg1 < ( * (int *) arg2) return –1

else if ( * (int *) arg1 == ( * (int *) arg2) return 0

else return 1;

}








void main() {

qsort ( nums, 5, sizeof(int), compar);

}
Go to the top of the page
 
+Quote Post
5 страниц V   1 2 3 > »   
Start new topic
Ответов (1 - 60)
evc
сообщение Oct 21 2007, 10:51
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 206
Регистрация: 17-03-07
Из: Москва
Пользователь №: 26 266



Цитата(Евгений Германович @ Oct 21 2007, 13:46) *
...
int compar(const void *arg1,const void *arg2); ...


Нужно убрать точки с запятой, надеюсь понятно почему! smile.gif

Сообщение отредактировал evc - Oct 21 2007, 10:54


--------------------
УЭР
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 21 2007, 11:05
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(evc @ Oct 21 2007, 13:51) *
Нужно убрать точки с запятой...

Где убрать, а где и добавить парочку sad.gif. Еще с вызовом функции ознакомиться. В общем Автору следует c "Hello World!" и учебником для начала "побороться", пожалуй sad.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Oct 21 2007, 11:12
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(zltigo @ Oct 21 2007, 14:05) *
Где убрать, а где и добавить парочку sad.gif. Еще с вызовом функции ознакомиться. В общем Автору следует c "Hello World!" и учебником для начала "побороться", пожалуй sad.gif.

Вообщето это текст примера из PIC C
int compar(const void *arg1,const void *arg2)
Ну убрал результат ?Кстати чем гнуть пальцы продемонстрируйте интеллект.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Oct 21 2007, 15:24
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(Евгений Германович @ Oct 21 2007, 15:12) *


Тут дело не в qsort, а в многочисленных грамматических ошибках в коде функции compar.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
Edmundo
сообщение Oct 21 2007, 19:05
Сообщение #6


Мастер
****

Группа: Свой
Сообщений: 730
Регистрация: 18-02-06
Из: Москва
Пользователь №: 14 474



Цитата(Евгений Германович @ Oct 21 2007, 13:46) *
Народ!Окажите помощ.Не могу одолеть функцию qsort.что бы не пробовал,кроме ошибок ничего.

Ув. Евгений Германович, вы все-таки прислушайтесь к призывам, и почитайте труды достойных мужей по C/C++. Не сочтите это пожелание за наезд, ни в коем случае. А код лучше записать так (не компилировал, может опечатался, но пытался внимательно smile.gif):

Код
#include <stdlib.h>
int nums[5]={2,3,1,5,4};

int compar(const void *arg1,const void *arg2)
{
    if (  *((int *) arg1) <  *((int *) arg2)  )
        return –1
    else if (  *((int *) arg1) == *((int *) arg2)  )
        return 0;
    else
        return 1;
}

void main()
{
    qsort(nums, 5, sizeof(int), compar);
}


--------------------
شامل
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 21 2007, 22:22
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Edmundo @ Oct 21 2007, 22:05) *
но пытался внимательно smile.gif):

Еще одну ";" надо добавить sad.gif.
Ну а вообще это так:
Код
#include <stdlib.h>
#define A_SIZE 5
int nums[A_SIZE] = { 2,3,1,5,4 };

int compar( const void *arg1, const void *arg2 )
{
    return( *(int *)arg1 - *(int *)arg2 );
}

void main()
{
    qsort( nums, sizeof(nums)/sizeof(int), sizeof(int), compar );
}



Цитата(Евгений Германович @ Oct 21 2007, 14:12) *
продемонстрируйте интеллект.

Интелект это слишком, интеллект это Вам потом потребуется. Пока нужны банальные знания самых основ языка sad.gif 'C' и основ английского, дабы понять сообщения компилятора.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Edmundo
сообщение Oct 22 2007, 04:41
Сообщение #8


Мастер
****

Группа: Свой
Сообщений: 730
Регистрация: 18-02-06
Из: Москва
Пользователь №: 14 474



Цитата(zltigo @ Oct 22 2007, 02:22) *
Еще одну ";" надо добавить sad.gif.

Да, виноват, промахнулся...

Цитата(zltigo @ Oct 22 2007, 02:22) *
Ну а вообще это так...

Ну, это уже оптимизация и стилизация a14.gif


--------------------
شامل
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Oct 22 2007, 12:20
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Clean: Deleting intermediary and output files.
Clean: Deleted file "C:\Program Files\PICC\CHUDO\asdf\asd1.mcs".
Clean: Done.
Executing: "C:\Program Files\PICC\Ccsc.exe" "asd1.c" +FH +DF +LN +T -A +M +Z +Y=9 +EA
*** Error 28 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 24(24,28): Expecting an identifier
*** Error 48 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 24(25,29): Expecting a (
*** Error 81 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 24(42,46): Expecting a basic type
*** Error 48 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 24(48,52): Expecting a (
*** Error 43 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 25(1,2): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 26(5,11): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 26(11,12): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 26(13,14): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 26(14,15): Expecting a declaration
*** Error 28 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 26(20,21): Expecting an identifier
*** Error 43 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 26(26,27): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 26(28,29): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 26(29,30): Expecting a declaration
*** Error 28 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 26(35,36): Expecting an identifier
*** Error 43 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 26(41,42): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 26(42,43): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 27(1,2): Expecting a declaration
*** Error 51 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 31(64,70): A numeric expression must appear here
18 Errors, 0 Warnings.
Halting build on first failure as requested.
BUILD FAILED: Mon Oct 22 18:20:07 2007

НУ и....?Вы думаете я от нечего делать обратился.Тот текст,что я вытащил-это пример из хелпа.

Сообщение отредактировал Евгений Германович - Oct 22 2007, 12:22
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 22 2007, 12:33
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Евгений Германович @ Oct 22 2007, 15:20) *
Тот текст,что я вытащил-это пример из хелпа.

И мне и компилятору все едино, из какого места Вы его вытащили. Как минимум, синтаксические ошибки ПРИДЕТСЯ править.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Oct 22 2007, 14:32
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Эти ошибки получены при компиляции предложенного вами текста программы.#include <stdlib.h>
#define A_SIZE 5
int nums[A_SIZE] = { 2,3,1,5,4 };

int compar( const void *arg1, const void *arg2 )
{
return( *(int *)arg1 - *(int *)arg2 );
}

void main()
{
qsort( nums, sizeof(nums)/sizeof(int), sizeof(int), compar );
}

Сообщение отредактировал Евгений Германович - Oct 22 2007, 14:34
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 22 2007, 14:42
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Евгений Германович @ Oct 22 2007, 17:32) *
Эти ошибки получены при компиляции предложенного вами текста программы.

smile.gif smile.gif smile.gif Ну и какая строка (из максимум пятнадцати!) моего текста имеет номер 24?
Ну а то, что Вы с таким-же успехом, натаскали рядом ничего незначащих для Вас буковок, то это другая проблема.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Oct 23 2007, 12:18
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Может вы не в курсе но пробел это тоже строка.
Если вы выставляете текст программы ,то немешало бы вначале его проверить.
Clean: Deleting intermediary and output files.
Clean: Deleted file "asd1.ERR".
Clean Warning: File "C:\Program Files\PICC\CHUDO\asdf\asd1.o" doesn't exist.
Clean: Deleted file "asd1.SYM".
Clean: Deleted file "asd1.LST".
Clean: Deleted file "asd1.PJT".
Clean: Deleted file "asd1.TRE".
Clean: Deleted file "asd1.STA".
Clean: Deleted file "asd1.COF".
Clean: Deleted file "C:\Program Files\PICC\CHUDO\asdf\asd1.mcs".
Clean: Done.
Executing: "C:\Program Files\PICC\Ccsc.exe" "asd1.c" +FH +DF +LN +T -A +M +Z +Y=9 +EA
*** Error 28 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 9(24,28): Expecting an identifier
*** Error 48 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 9(25,29): Expecting a (
*** Error 81 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 9(42,46): Expecting a basic type
*** Error 48 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 9(48,52): Expecting a (
*** Error 43 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 10(1,2): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 11(5,11): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 11(11,12): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 11(13,14): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 11(14,15): Expecting a declaration
*** Error 28 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 11(20,21): Expecting an identifier
*** Error 43 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 11(26,27): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 11(28,29): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 11(29,30): Expecting a declaration
*** Error 28 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 11(35,36): Expecting an identifier
*** Error 43 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 11(41,42): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 11(42,43): Expecting a declaration
*** Error 43 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 12(1,2): Expecting a declaration
*** Error 51 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 16(64,70): A numeric expression must appear here
18 Errors, 0 Warnings.
Halting build on first failure as requested.
BUILD FAILED: Tue Oct 23 18:17:24 2007



Это ваш текст.

#include "C:\Program Files\PICC\CHUDO\asdf\asd1.h"



#include <stdlib.h>
#define A_SIZE 5
int nums[A_SIZE] = { 2,3,1,5,4 };

int compar( const void *arg1, const void *arg2 )
{
return( *(int *)arg1 - *(int *)arg2 );
}

void main()
{
qsort( nums, sizeof(nums)/sizeof(int), sizeof(int), compar );
}
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 23 2007, 12:39
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Евгений Германович @ Oct 23 2007, 15:18) *
Это ваш текст.

Нет. Это Ваш. Мой на одну строку кода меньше smile.gif
Код
#include <stdlib.h>
#define A_SIZE 5
int nums[A_SIZE] = { 2,3,1,5,4 };
int compar( const void *arg1, const void *arg2 )
{    return( *(int *)arg1 - *(int *)arg2 );
}
void main()
{    qsort( nums, sizeof(nums)/sizeof(int), sizeof(int), compar );
}

Цитата
Может вы не в курсе но пробел это тоже строка.

Обалдеть! А мужики-то не знают smile.gif.
Ну и где в приведенном мной ранее тексте 24 строка, хоть с пробелами, хоть нет.
Цитата
Если вы выставляете текст программы ,то немешало бы вначале его проверить.

Я способен написать исходник и много большего объема без ошибок, тем более, без синтаксических smile.gif.
Ищите проблемы с набиванием текста у себя.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Oldring
сообщение Oct 23 2007, 12:51
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(Евгений Германович @ Oct 23 2007, 16:18) *
#include "C:\Program Files\PICC\CHUDO\asdf\asd1.h"


Удалите этот include и попробуйте скомпилировать.
Кстати, правильно писать #include "C:\\Program Files\\PICC\\CHUDO\\asdf\\asd1.h"


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Oct 23 2007, 13:16
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



//#include "C:\Program Files\PICC\CHUDO\asdf\asd1.h"



#include <stdlib.h>
#define A_SIZE 5
int nums[A_SIZE] = { 2,3,1,5,4 };

int compar( const void *arg1, const void *arg2 )
{
return( *(int *)arg1 - *(int *)arg2 );
}

void main()
{
qsort( nums, sizeof(nums)/sizeof(int), sizeof(int), compar );
}
Clean: Deleting intermediary and output files.
Clean: Deleted file "asd1.ERR".
Clean Warning: File "C:\Program Files\PICC\CHUDO\asdf\asd1.o" doesn't exist.
Clean: Done.
Executing: "C:\Program Files\PICC\Ccsc.exe" "asd1.c" +FH +DF +LN +T -A +M +Z +Y=9 +EA
*** Error 128 "C:\PROGRA~1\PICC\drivers\stdlib.h" Line 23(1,2): A #DEVICE required before this line
1 Errors, 0 Warnings.
Halting build on first failure as requested.
BUILD FAILED: Tue Oct 23 19:15:34 2007

Ну и ???
Кстати эта строка вставляется автоматически при создании проекта.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Oct 23 2007, 13:24
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(Евгений Германович @ Oct 23 2007, 17:16) *
Ну и ???
Кстати эта строка вставляется автоматически при создании проекта.


А, понятно, это какие-то особенности конкретного компилятора. Не умеет компилировать stdlib.h без указания устройства, под которое ведется компиляция. Чтобы не портить исходник всякими левыми автоматически сгенерированными хедерами - соответссующее определение наверняка можно вставить в опциях проекта.

Вы, вероятно, в первый раз пытаетесь писать на С? Скопируйте для начала какой-нибудь пример, который обычно идет с компилятором, в отдельный каталог. Потом добейтесь его компиляции. Когда будет компилироваться - можно будет дойти до qsort. Так как я с этим компилятором, вероятно, не работал - более подробно объяснить не смогу, как это сделать.

То, что такая строка генерируется автоматически при создани проекта, скорее всего, говорит о качестве компилятора. Птому что бэкслеш - это префикс escape последовательности. И так писать include нехорошо, даже если конкретный компилятор и проглатывает.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 23 2007, 13:26
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Oldring @ Oct 23 2007, 15:51) *
Кстати, правильно писать #include "C:\\Program Files\\PICC\\CHUDO\\asdf\\asd1.h"

С двойными слешами перебор, ибо это не сишнная стринг а директива препроцессора, но можно. Вообще-то возможно и #include "C:\\\\Program Files\\\\\\PICC\\CHUDO\\asdf\\asd1.h"
И так:
#include "C:/Program Files\PICC\CHUDO/asdf\asd1.h"
Препроцессоры на практике разбираются со всем.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Oldring
сообщение Oct 23 2007, 13:36
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(zltigo @ Oct 23 2007, 17:26) *
С двойными слешами перебор, ибо это не сишнная стринг а директива препроцессора, но можно.


Не совсем - по стандарту препроцессор работает на потоке лексем, и escape заменяется во время лексического разбора. Поэтому там именно строка. Кстати, старые С компиляторы не кушали с одинарными бэкслешами. Это потом появились слишком умные в рассчете на типичные ошибки неопытных программистов.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
soshnev
сообщение Oct 23 2007, 13:49
Сообщение #20


Частый гость
**

Группа: Новичок
Сообщений: 119
Регистрация: 26-08-05
Пользователь №: 7 989



Цитата(Евгений Германович @ Oct 23 2007, 17:16) *
//#include "C:\Program Files\PICC\CHUDO\asdf\asd1.h"

#include <stdlib.h>
#define A_SIZE 5
int nums[A_SIZE] = { 2,3,1,5,4 };

int compar( const void *arg1, const void *arg2 )
{
return( *(int *)arg1 - *(int *)arg2 );
}

void main()
{
qsort( nums, sizeof(nums)/sizeof(int), sizeof(int), compar );
}
Clean: Deleting intermediary and output files.
Clean: Deleted file "asd1.ERR".
Clean Warning: File "C:\Program Files\PICC\CHUDO\asdf\asd1.o" doesn't exist.
Clean: Done.
Executing: "C:\Program Files\PICC\Ccsc.exe" "asd1.c" +FH +DF +LN +T -A +M +Z +Y=9 +EA
*** Error 128 "C:\PROGRA~1\PICC\drivers\stdlib.h" Line 23(1,2): A #DEVICE required before this line
1 Errors, 0 Warnings.
Halting build on first failure as requested.
BUILD FAILED: Tue Oct 23 19:15:34 2007

Ну и ???
Кстати эта строка вставляется автоматически при создании проекта.

Эта строка собирается исходя из опций для компиляции модели (напр. в
Borland-C была large, small модели и т п "лабуда".
Посмотрите опции компиляции модели или компилятора...
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Oct 23 2007, 13:56
Сообщение #21


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(Oldring @ Oct 23 2007, 16:24) *
А, понятно, это какие-то особенности конкретного компилятора. Не умеет компилировать stdlib.h без указания устройства, под которое ведется компиляция. Чтобы не портить исходник всякими левыми автоматически сгенерированными хедерами - соответссующее определение наверняка можно вставить в опциях проекта.

Вы, вероятно, в первый раз пытаетесь писать на С? Скопируйте для начала какой-нибудь пример, который обычно идет с компилятором, в отдельный каталог. Потом добейтесь его компиляции. Когда будет компилироваться - можно будет дойти до qsort. Так как я с этим компилятором, вероятно, не работал - более подробно объяснить не смогу, как это сделать.

То, что такая строка генерируется автоматически при создани проекта, скорее всего, говорит о качестве компилятора. Птому что бэкслеш - это префикс escape последовательности. И так писать include нехорошо, даже если конкретный компилятор и проглатывает.

С самим проектом все нормально не уводите процесс.На Си не впервые,но не профи.Компилятор полное дерьмо,я не смог на нем создать многофайловый прект.
Однако вернемся к теме.
Текст я не набиваю,а копирую ваш.
О какой лишней строке вы говорите?
#include "C:\Program Files\PICC\CHUDO\asdf\asd1.h" если про эту то с ней все нормально -многократно проверено.Откомпилируйте свой текст сами и будете неприятно удивлены.Пока у вас одни слова.До кучи я трудился на 2 аппаратах на другом эта строка выглядит по другому но ошибки теже самые.

Сообщение отредактировал Евгений Германович - Oct 23 2007, 14:01
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 23 2007, 14:07
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Евгений Германович @ Oct 23 2007, 16:56) *
Откомпилируйте свой текст сами и будете неприятно удивлены.Пока у вас одни слова.

Не обижайтесь, но я не буду заниматься ерундой компилируя совершенно очевидные вещи.
Если угодно, то можете считать, что я откомпилировал и ошибок не получил smile.gif




Цитата(Oldring @ Oct 23 2007, 16:36) *
Поэтому там именно строка. Кстати, старые С компиляторы не кушали с одинарными бэкслешами. Это потом появились слишком умные в рассчете на типичные ошибки неопытных программистов.

Дело обстоит с точностью до наоборот - возьмите, например BCC 1992 года (можете и более поздние 3.1 ) и попробуйте ему скормить любой двойной слэш.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Oct 23 2007, 14:11
Сообщение #23


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(zltigo @ Oct 23 2007, 17:02) *
Не обижайтесь, но я не буду заниматься ерундой компилируя совершенно очевидные вещи.
Если угодно, то можете считать, что я откомпилировал и ошибок не получил smile.gif

Я не обижаюсь Важен результат,а его нет.Могу я считать или нет.Вы похоже весьма опасаетесь получить отрицательный результат.Не бойтесь.Как говорил Ф Энгельс или К Маркс не ошибается тот кто ничего не делает.Кстати на Турбо Си подобный текст тоже не проходит.
Кстати вы говорите о больших Си а это Си для микроконтроллеров.

Сообщение отредактировал Евгений Германович - Oct 23 2007, 14:13
Go to the top of the page
 
+Quote Post
Oldring
сообщение Oct 23 2007, 14:15
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(Евгений Германович @ Oct 23 2007, 17:56) *
С самим проектом все нормально не уводите процесс.На Си не впервые,но не профи.Компилятор полное дерьмо,я не смог на нем создать многофайловый прект.
Однако вернемся к теме.
Текст я не набиваю,а копирую ваш.
О какой лишней строке вы говорите?
#include "C:\Program Files\PICC\CHUDO\asdf\asd1.h" если про эту то с ней все нормально -многократно проверено.Откомпилируйте свой текст сами и будете неприятно удивлены.Пока у вас одни слова.До кучи я трудился на 2 аппаратах на другом эта строка выглядит по другому но ошибки теже самые.


Вы бы для начала поучились лучше вежливости, прежде чем пальцы растапыривать. Ваша квалификация в программировании очевидно находится на уровне начинающего. Иначе бы вы не задавали подобные вопросы и не сделали бы столько грамматических ошибок в написании одной функции.
Моего текста вы компилировать не можете потому что я ничего не писал. Текст других авторов выглядит нормально.
Ставить себе ваш компилятор и компилировать самому никакого интереса для себя не вижу. Более того, не помню, чтобы был вам что-то должен.
По делу. У вашего компилятора какие-то глюки. Попробуйте скомпилировать один файл без инклудов и вызова функции qsort. То есть одно определение функции compar. Возможно ваш компилятор не понимает ANSI C и нужно выкинуть ключевые слова const.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Oct 23 2007, 14:24
Сообщение #25


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(Oldring @ Oct 23 2007, 17:15) *
Вы бы для начала поучились лучше вежливости, прежде чем пальцы растапыривать. Ваша квалификация в программировании очевидно находится на уровне начинающего. Иначе бы вы не задавали подобные вопросы и не сделали бы столько грамматических ошибок в написании одной функции.
Моего текста вы компилировать не можете потому что я ничего не писал. Текст других авторов выглядит нормально.
Ставить себе ваш компилятор и компилировать самому никакого интереса для себя не вижу. Более того, не помню, чтобы был вам что-то должен.
По делу. У вашего компилятора какие-то глюки. Попробуйте скомпилировать один файл без инклудов и вызова функции qsort. То есть одно определение функции compar. Возможно ваш компилятор не понимает ANSI C и нужно выкинуть ключевые слова const.
Вы весьма невнимательны .текст не мой я уже писал об этом.Без инклудов не получится.
#include "C:\Program Files\PICC\CHUDO\asdf\asd1.h"

#include <stdlib.h>
#define A_SIZE 5
int nums[A_SIZE] = { 2,3,1,5,4 };
int compar( const void *arg1, const void *arg2 )
{ return( *(int *)arg1 - *(int *)arg2 );
}
void main()
{ // qsort( nums, sizeof(nums)/sizeof(int), sizeof(int), compar );
}
17 ошибок.И предложение откомпилировать текст было адресовано не вам,вы напрасно возмущаетесь.
Про пальцы больше относится не ко мне.На конкретно поставленный вопрос одни рассуждения.Текст взят без изменений с самого компилятора.

Сообщение отредактировал Евгений Германович - Oct 23 2007, 14:28
Go to the top of the page
 
+Quote Post
Oldring
сообщение Oct 23 2007, 14:25
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(Евгений Германович @ Oct 23 2007, 18:24) *
Вы весьма невнимательны .текст не мой я уже писал об этом.Без инклудов не получится.


У вас ругалось на stdlib.h после комментарии первого инклуда. Закомментируйте и его тоже.

P.S. По поводу гнутья пальцев: столько, сколько я за свою жизнь написал и заставил работать сишного кода вы, очевидно, уже никогда не напишете. Да и я уже тоже наверняка еще столько же не напишу. Так что если вам пытаются помочь - умейте быть благодарны. Это у вас проблемы, а не у нас.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Oct 23 2007, 14:45
Сообщение #27


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(Oldring @ Oct 23 2007, 17:25) *
У вас ругалось на stdlib.h после комментарии первого инклуда. Закомментируйте и его тоже.

P.S. По поводу гнутья пальцев: столько, сколько я за свою жизнь написал и заставил работать сишного кода вы, очевидно, уже никогда не напишете. Да и я уже тоже наверняка еще столько же не напишу. Так что если вам пытаются помочь - умейте быть благодарны.

#include "C:\Program Files\PICC\CHUDO\asdf\asd1.h"

//#include <stdlib.h>
#define A_SIZE 5
int nums[A_SIZE] = { 2,3,1,5,4 };
int compar( const void *arg1, const void *arg2 )
{ return( *(int *)arg1 - *(int *)arg2 );
}
void main()
{ // qsort( nums, sizeof(nums)/sizeof(int), sizeof(int), compar );
}
17 ошибок.Попробую отыскать прототип этой функции.Не надо так мрачно пишите хоть в 10 раз больше.


void main()
{ // qsort( nums, sizeof(nums)/sizeof(int), sizeof(int), compar );
}
typedef signed int (*_Cmpfun)(char * p1,char * p2);

void qsort(char * qdata, int qitems, int qsize, _Cmpfun cmp) {
int m,j,i,l;
short done;
BYTE t[16];

m = qitems/2;
while( m > 0 ) {
for(j=0; j<(qitems-m); ++j) {
i = j;
do
{
done=TRUE;
l = i+m;
if( (*cmp)(qdata+i*qsize, qdata+l*qsize) > 0 ) {
memcpy(t, qdata+i*qsize, qsize);
memcpy(qdata+i*qsize, qdata+l*qsize, qsize);
memcpy(qdata+l*qsize, t, qsize);
if(m <= i)
i -= m;
done = FALSE;
}
} while(!done);
}
m = m/2;
}
}
Вот прототип.ВЫ считаете те слова,что были написаны это помощ?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 23 2007, 14:45
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Евгений Германович @ Oct 23 2007, 17:11) *
Вы похоже весьма опасаетесь получить отрицательный результат.Не бойтесь.

Отнюдь smile.gif имею абсолютную уверенность в компиляции сего любым компилятором smile.gif
Цитата
Как говорил Ф Энгельс или К Маркс не ошибается тот кто ничего не делает.

Это не классики, это народная мудрость. Причем я знаю и другие русские пословицы и поговорки, на мой взгляд много много более подходящие по теме smile.gif
Цитата
Кстати на Турбо Си подобный текст тоже не проходит.

Надоело. Сильно надоело. Делаем Copy->Paste, добавляем один printf() для наглядности, получаем test.с (см. приложенный архив )
Набираем:
bcc test.c
Получаем:
Код
Borland C++  Version 3.1 Copyright (c) 1992 Borland International
test.c:
Turbo Link  Version 7.1.32.2. Copyright (c) 1987, 1996 Borland International

        Available memory 4155500

И исполняемый файл (тоже в приложении).

Финита ла комедиа....
Прикрепленные файлы
Прикрепленный файл  TEST.rar ( 4.79 килобайт ) Кол-во скачиваний: 30
 


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Oldring
сообщение Oct 23 2007, 14:50
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(Евгений Германович @ Oct 23 2007, 18:33) *
17 ошибок.Попробую отыскать прототип этой функции.Не надо так мрачно пишите хоть в 10 раз больше.


Это не мрачно. Я бы не хотел писать еще столько же - скушно.
Прототип здесь не нужен. Функция нигде не используется. Выкиньте все лишнее из текста. Если есть сомнения - лучше даже не комментируйте, а сотрите. Все инклуды. Может быть функцию main. Вы, кстати, закомментировали stdlib.h но оставили первый хедер. Он вам нужен?

У кривых компиляторов для 8-биток бывают еще тонкости с указателями. Попробуйте для начала скомпилировать функцию

int compar( int arg1, int arg2 )
{
return arg1 - arg2;
}

потом

int compar( int* arg1, int* arg2 )
{
return *arg1 - *arg2;
}


Цитата(Евгений Германович @ Oct 23 2007, 18:45) *
typedef signed int (*_Cmpfun)(char * p1,char * p2);


О!
Компилятор еще не ANSI C. Еще не знает ключевое слово void. Вместо void используйте тип char, выкиньте const.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Oct 23 2007, 15:20
Сообщение #30


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(Oldring @ Oct 23 2007, 17:50) *
Это не мрачно. Я бы не хотел писать еще столько же - скушно.
Прототип здесь не нужен. Функция нигде не используется. Выкиньте все лишнее из текста. Если есть сомнения - лучше даже не комментируйте, а сотрите. Все инклуды. Может быть функцию main. Вы, кстати, закомментировали stdlib.h но оставили первый хедер. Он вам нужен?

У кривых компиляторов для 8-биток бывают еще тонкости с указателями. Попробуйте для начала скомпилировать функцию

int compar( int arg1, int arg2 )
{
return arg1 - arg2;
}

потом

int compar( int* arg1, int* arg2 )
{
return *arg1 - *arg2;
}
О!
Компилятор еще не ANSI C. Еще не знает ключевое слово void. Вместо void используйте тип char, выкиньте const.

#include "C:\Program Files\PICC\CHUDO\asdf\asd1.h"

#include <stdlib.h>
#define A_SIZE 5
int nums[A_SIZE] = { 2,3,1,5,4 };


int compar( char *arg1, char *arg2 )

{ return( *(int *)arg1 - *(int *)arg2 );
}
void main()
{ qsort( nums, sizeof(nums)/sizeof(int), sizeof(int), compar );
}


Clean: Deleting intermediary and output files.
Clean: Deleted file "asd1.ERR".
Clean Warning: File "C:\Program Files\PICC\CHUDO\asdf\asd1.o" doesn't exist.
Clean: Done.
Executing: "C:\Program Files\PICC\Ccsc.exe" "asd1.c" +FH +DF +LN +T -A +M +Z +Y=9 +EA
*** Error 51 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 13(65,71): A numeric expression must appear here
1 Errors, 0 Warnings.
Halting build on first failure as requested.
BUILD FAILED: Tue Oct 23 21:16:46 2007
Go to the top of the page
 
+Quote Post
Oldring
сообщение Oct 23 2007, 15:24
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(Евгений Германович @ Oct 23 2007, 19:20) *
*** Error 51 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 13(65,71): A numeric expression must


Посмотрите что у вас записано в 13 строке в позициях с 65 по 71. Внизу в редакторе вероятно написана текущая позиция курсора.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Oct 23 2007, 15:43
Сообщение #32


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



все проверю,до завтра.

Цитата(Евгений Германович @ Oct 23 2007, 18:32) *
все проверю,до завтра.

{ qsort( nums, sizeof(nums)/sizeof(int), sizeof(int), compar );это строка 13
Go to the top of the page
 
+Quote Post
Oldring
сообщение Oct 23 2007, 16:38
Сообщение #33


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(Евгений Германович @ Oct 23 2007, 19:43) *
все проверю,до завтра.
{ qsort( nums, sizeof(nums)/sizeof(int), sizeof(int), compar );это строка 13

А позиции-то? Мне их вручную по буквам считать? Лень как-то...

Цитата(Евгений Германович @ Oct 23 2007, 19:43) *
все проверю,до завтра.
{ qsort( nums, sizeof(nums)/sizeof(int), sizeof(int), compar );это строка 13


Попробуйте поставить амперсанд перед compar. Я точно не уверен - но кажется получение адреса функции без амперсанда появилось в языке не сразу.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 23 2007, 18:24
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Oldring @ Oct 23 2007, 19:38) *
Я точно не уверен - но кажется получение адреса функции без амперсанда появилось в языке не сразу.

Имена массивов, структур и функций отродясь были адресами - не верите, спросите у Ритчи smile.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Oldring
сообщение Oct 23 2007, 19:16
Сообщение #35


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(zltigo @ Oct 23 2007, 22:24) *
Имена массивов, структур и функций отродясь были адресами - не верите, спросите у Ритчи smile.gif


Вы скорее всего правы - в тонкой синей книжечке, которой у меня под рукой уже давно нет wink.gif кажется именно так и было. Но амперсанд я бы все равно попробовал поставить и посмотреть на результат в такой сиуации. Мало ли какие ошибки допустили программисты компилятора?

Цитата(Евгений Германович @ Oct 23 2007, 19:43) *
все проверю,до завтра.
{ qsort( nums, sizeof(nums)/sizeof(int), sizeof(int), compar );это строка 13


Кстати, если нужно отсортировать пяток чисел - лучше вместо библиотечной qsort использовать самописный классический пузырек. Всего двойной вложенный цикл. И горадо быстрее будет работать, и код будет компактнее, что на 8-битках может быть существенным. В CRTL от MS для Win32 в qsort короткие последовательности длины меньше 8 сортируются пузырьком - так быстрее.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
dxp
сообщение Oct 24 2007, 03:35
Сообщение #36


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(zltigo @ Oct 24 2007, 01:24) *
Имена массивов, структур и функций отродясь были адресами - не верите, спросите у Ритчи smile.gif

Насчет структур не погорячились? smile.gif


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 24 2007, 07:14
Сообщение #37


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(dxp @ Oct 24 2007, 06:35) *
Насчет структур не погорячились? smile.gif

Ага, самое смешное, что написал правильно а потом почему-то спустя полчаса добавил. Бзик какой-то sad.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Oct 24 2007, 12:59
Сообщение #38


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Не ссорьтесь.Я до неприличия упростил программу.Вся проблема в самой функции QSORT
Программу для сортировки я уже написал ипользовав прототип QSORT,но есть жгучее желание добить.
#include "C:\Program Files\PICC\CHUDO\asdf\asd1.h"

#include <stdlib.h>
#define A_SIZE 5
int nums[A_SIZE] = { 2,3,1,5,4 };



//int compar( char *arg1, char *arg2 )

//{
// return( *(int *)arg1 - *(int *)arg2 );
//}
compar()
{
return 1;
}

void main()
{
qsort( nums, sizeof(nums)/sizeof(int), sizeof(int),compar);
}

Clean: Deleting intermediary and output files.
Clean: Deleted file "asd1.ERR".
Clean Warning: File "C:\Program Files\PICC\CHUDO\asdf\asd1.o" doesn't exist.
Clean: Done.
Executing: "C:\Program Files\PICC\Ccsc.exe" "asd1.c" +FH +DF +LN +T -A +M +Z +Y=9 +EA
*** Error 51 "C:\Program Files\PICC\CHUDO\asdf\asd1.c" Line 21(53,59): A numeric expression must appear here
1 Errors, 0 Warnings.
Halting build on first failure as requested.
BUILD FAILED: Wed Oct 24 18:50:54 2007


53.59 это слово компар.Мне кажется перед компар нужно воткнуть какоето извращение.
Мне в этом компиляторе при передаче параметров пришлось весьма нестандартно описывать указатели.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Oct 24 2007, 16:11
Сообщение #39


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(Евгений Германович @ Oct 24 2007, 16:59) *
Мне в этом компиляторе при передаче параметров пришлось весьма нестандартно описывать указатели.


Весьма возможно, хоть и странно в данном случае. Лучше всего посмотреть примеры от этого конкретного компилятора на предмет указателей на функции. У примитивных компиляторов для восьмибиток разработчики нередко экономят на универсальных указателях. Так как у них с адресными пространствами беда - их много разных и несовместимых, и поддержка универсальных указателей нередко недешева. И глюкава. При этом, конечно, получается неполная поддержка языка - но разработчиков часто это мало волнует.

P.S. Кстати, лучше не называйте этот алгоритм сортировки qsort. Этот алгоритм обычно называется shellsort - сортировка Шелла. qsort - это другой алгоритм, обычно применяемый в библиотеках для нормальных процессоров.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Oct 25 2007, 13:11
Сообщение #40


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Поробую.Кстати почему вы считаете что это для 8 битовых,все типы я не смотрел ,но мой проц 16 разрядный.Ваш текст нормально работает,но не у меня beer.gif
Go to the top of the page
 
+Quote Post
Oldring
сообщение Oct 25 2007, 13:20
Сообщение #41


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(Евгений Германович @ Oct 25 2007, 17:11) *
Поробую.Кстати почему вы считаете что это для 8 битовых,все типы я не смотрел ,но мой проц 16 разрядный.Ваш текст нормально работает,но не у меня beer.gif


Почему-то показалось, что речь идет про 8-битник.
С 16-битниками обычно все лучше. Правда, кривые компиляторы для любых процессоров попадаюся.
Ваш проц не поддержан в gcc? Если поддержан - может оказаться проще сменить компилятор, чем разбираться с глюками этого smile.gif


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 25 2007, 13:50
Сообщение #42


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Oldring @ Oct 25 2007, 16:20) *
Правда, кривые компиляторы для любых процессоров попадаюся.

В существовании настолько нерабочих не верится совсем, ну а поскольку свой пример вопрошающий не смог даже BCC откомпилить (кстати я в ответ на многочисленные упреки в неумении писать и нежелание "проверять" компилятором выложил компилирующийся пример и..... тишина..), то не верится уже на 99,9999(9)%.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Oct 25 2007, 14:45
Сообщение #43


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Я ответил,но перепутал адресата,все работало и еще один вариант из предложенных но ...
Что такое gcc У меня проц микрочиповский пик18.Си которые для них это хайтекси и с18 но у меня их нет.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Oct 25 2007, 15:36
Сообщение #44


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(Евгений Германович @ Oct 25 2007, 18:45) *
Я ответил,но перепутал адресата,все работало и еще один вариант из предложенных но ...
Что такое gcc У меня проц микрочиповский пик18.Си которые для них это хайтекси и с18 но у меня их нет.


Я вообще говоря с пиками дела никогда не имел и особо не хотел бы smile.gif Но мне казались что они когда-то были восьмибитниками. Они как-то поддержали 16-битный режим?

GCC:
http://gcc.gnu.org/
Но пики кажется не поддерживает - по крайней мере, я про это ничего не помню.

P.S. Вы меня обмануть пытаетесь!
http://ww1.microchip.com/downloads/en/Devi...c/DS-39630d.pdf
8-битник да еще и с Гарвардовской архитектурой! Нет ничего хуже для C компиляторов smile.gif


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Oct 26 2007, 13:39
Сообщение #45


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(Oldring @ Oct 25 2007, 18:36) *
Я вообще говоря с пиками дела никогда не имел и особо не хотел бы smile.gif Но мне казались что они когда-то были восьмибитниками. Они как-то поддержали 16-битный режим?

GCC:
http://gcc.gnu.org/
Но пики кажется не поддерживает - по крайней мере, я про это ничего не помню.

P.S. Вы меня обмануть пытаетесь!
http://ww1.microchip.com/downloads/en/Devi...c/DS-39630d.pdf
8-битник да еще и с Гарвардовской архитектурой! Нет ничего хуже для C компиляторов smile.gif

Нет не пытаюсь мин длина команды 12 бит, у 18 пиков 16 бит те шина данных 16бит.У 24 пиков не знаю.
А по данным конечно байт.Для си может и нет но прирост скорости по сравнению с нейманом впечатляет.За ссылку спасибо но аглицким не владею.

Сообщение отредактировал Евгений Германович - Oct 26 2007, 13:43
Go to the top of the page
 
+Quote Post
xemul
сообщение Oct 26 2007, 14:46
Сообщение #46



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(Евгений Германович @ Oct 26 2007, 17:39) *
Нет не пытаюсь мин длина команды 12 бит, у 18 пиков 16 бит те шина данных 16бит.У 24 пиков не знаю.
А по данным конечно байт.Для си может и нет но прирост скорости по сравнению с нейманом впечатляет.За ссылку спасибо но аглицким не владею.

Вам уже сказали, что PIC'и имеют Гарвардскую архитектуру, т.е. разделенные шины команд и данных. Разрядность шины команд PIC18 16 бит, разрядность шины данных - 8. Это совершенно несекретная информация, доступная на первых страницах даташита на любой PIC.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Oct 26 2007, 14:49
Сообщение #47


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(Евгений Германович @ Oct 26 2007, 17:39) *
А по данным конечно байт.


Так разрядность обычно меряется как раз разрядностью данных. Точнее, регистров общего назначения.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
xemul
сообщение Oct 26 2007, 15:03
Сообщение #48



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(Oldring @ Oct 25 2007, 19:36) *
...
8-битник да еще и с Гарвардовской архитектурой! Нет ничего хуже для C компиляторов smile.gif

AVR тоже на Гарварде, а вроде бы и ничего.
У PIC16 и младше одна из самых больших неприятностей (для меня) - один-единственный регистр косвенной адресации, что при нарезке ОЗУ на банки 256 байт - хороший повод застрелиться (компилятору С и его разработчикамsmile.gif). Дык что можно требовать от ядра 20 с лишним -летней давности?
PIC18 имеют 3 регистра косвенной адресации с поддержкой и пре- и пост-инкремента/декремента. Нарезка ОЗУ осталась, но уже не так мешает.
PIC24 в этом плане гораздо приятней smile.gif Не, не так. PIC24 приятней во всех планах сравнений с PIC16/PIC18.

2 Евгений Германович Если Вы хотите начать работать с PIC'ами, то начинайте сразу с PIC24 - сбережете кучу времени, денег, нервов,...
Go to the top of the page
 
+Quote Post
Oldring
сообщение Oct 26 2007, 15:37
Сообщение #49


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(xemul @ Oct 26 2007, 19:03) *
AVR тоже на Гарварде, а вроде бы и ничего.


До некоторой степени ничего. По сравнению с любым фон-неймановским даже 16-битником реализовывать в компиляторе универсальные указатели несравненно сложнее. Несмотря на три пары регистров выделенных для косвенной адресации.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Oct 27 2007, 10:39
Сообщение #50


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(xemul @ Oct 26 2007, 18:03) *
AVR тоже на Гарварде, а вроде бы и ничего.
У PIC16 и младше одна из самых больших неприятностей (для меня) - один-единственный регистр косвенной адресации, что при нарезке ОЗУ на банки 256 байт - хороший повод застрелиться (компилятору С и его разработчикамsmile.gif). Дык что можно требовать от ядра 20 с лишним -летней давности?
PIC18 имеют 3 регистра косвенной адресации с поддержкой и пре- и пост-инкремента/декремента. Нарезка ОЗУ осталась, но уже не так мешает.
PIC24 в этом плане гораздо приятней smile.gif Не, не так. PIC24 приятней во всех планах сравнений с PIC16/PIC18.

2 Евгений Германович Если Вы хотите начать работать с PIC'ами, то начинайте сразу с PIC24 - сбережете кучу времени, денег, нервов,...

А вам не приходилось писать для 1816 ве 35 32 байта озу из них 16 стек.
Про разрядность не согласен микрочип свои творения гордо именует 16 разрядными шина данных то 16 разрядов.На 24 пик нет рускоязычной документации.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Oct 27 2007, 11:08
Сообщение #51


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(Евгений Германович @ Oct 27 2007, 14:39) *
Про разрядность не согласен микрочип свои творения гордо именует 16 разрядными шина данных то 16 разрядов.На 24 пик нет рускоязычной документации.


Дурят народ smile.gif

Кстати, в документа от Микрочипа по приведенной мною ссылке написано именно, что 8-разрядный процессор. Так что может быть Вы чего-то не поняли? Где у Микрочипа было написано про 16-разрядность процессора?


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 27 2007, 11:20
Сообщение #52


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Oldring @ Oct 27 2007, 14:08) *
Дурят народ smile.gif

Не дурят, а дурит. Ибо PIC24/dsPIC 16 разрядные в отличии от обсуждаемого здесь PIC18.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Oct 27 2007, 12:20
Сообщение #53


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Прочитайте про разрядность команд.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Oct 27 2007, 12:44
Сообщение #54


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(zltigo @ Oct 27 2007, 15:20) *
Не дурят, а дурит.


Ну тогда уж "дурИт". smile.gif


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Oct 27 2007, 12:52
Сообщение #55


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(xemul @ Oct 26 2007, 17:46) *
Вам уже сказали, что PIC'и имеют Гарвардскую архитектуру, т.е. разделенные шины команд и данных. Разрядность шины команд PIC18 16 бит, разрядность шины данных - 8. Это совершенно несекретная информация, доступная на первых страницах даташита на любой PIC.

Не надо так нервничать.Вообще то делят не шины а память.
Уже не к вам а к остальным,вы бы подумали какую гадость воткнуть в QSORT дабы она заработала.
Это гораздо полезнее чем считать разрядность микроконтроллеров. twak.gif

Сообщение отредактировал Евгений Германович - Oct 27 2007, 13:05
Go to the top of the page
 
+Quote Post
Oldring
сообщение Oct 27 2007, 14:21
Сообщение #56


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(Евгений Германович @ Oct 27 2007, 16:52) *
Уже не к вам а к остальным,вы бы подумали какую гадость воткнуть в QSORT дабы она заработала.
Это гораздо полезнее чем считать разрядность микроконтроллеров. twak.gif


Ну это Вам нужно думать как обойти глюки конкретного компилятора. Не работают нормальные указатели на функции - не пользуйте, благо сортировка - это не то, что сложно запрограммировать самостоятельно. Мы в этой ситуации, не имея доступа к конкретному глюкале и не желая этим доступом обзаводиться, Вам можем только рассказать, почему со всякими пиками такой анал по части компиляторов. Ищите способ, предусмотренный разработчиками кимпилятора: раз qsort в библиотеке есть - значит указатели на функции каким-то образом поддерданы. Вы попробовали поставить амперсанд перед compar? Если не знаете что такое амперсанд - спросите. Это символ '&'
.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Oct 28 2007, 09:37
Сообщение #57


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(Oldring @ Oct 27 2007, 17:21) *
Ну это Вам нужно думать как обойти глюки конкретного компилятора. Не работают нормальные указатели на функции - не пользуйте, благо сортировка - это не то, что сложно запрограммировать самостоятельно. Мы в этой ситуации, не имея доступа к конкретному глюкале и не желая этим доступом обзаводиться, Вам можем только рассказать, почему со всякими пиками такой анал по части компиляторов. Ищите способ, предусмотренный разработчиками кимпилятора: раз qsort в библиотеке есть - значит указатели на функции каким-то образом поддерданы. Вы попробовали поставить амперсанд перед compar? Если не знаете что такое амперсанд - спросите. Это символ '&'
.

Прежде чем сюда обратиться я немало перепробовал .Амперсанд я втыкал первым,но я всегда считал,что & это собака. wink.gif
Go to the top of the page
 
+Quote Post
Oldring
сообщение Oct 28 2007, 09:44
Сообщение #58


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(Евгений Германович @ Oct 28 2007, 12:37) *
Амперсанд я втыкал первым,но я всегда считал,что & это собака. wink.gif


собака - это '@' biggrin.gif Видите собаку свернутую клубком?
Официально - "commercial at"
http://en.wikipedia.org/wiki/Commercial_at
http://en.wikipedia.org/wiki/Ampersand


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Oct 28 2007, 14:00
Сообщение #59


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(Oldring @ Oct 28 2007, 12:44) *
собака - это '@' biggrin.gif Видите собаку свернутую клубком?
Официально - "commercial at"
http://en.wikipedia.org/wiki/Commercial_at
http://en.wikipedia.org/wiki/Ampersand

Не может быть,наверное вы шутите.Если серьезно то спасибо за помощь beer.gif
А классификацию пиков по длине шины команд я встречал и не раз,это не мое изобретение.

Сообщение отредактировал Евгений Германович - Oct 28 2007, 14:04
Go to the top of the page
 
+Quote Post
xemul
сообщение Oct 28 2007, 16:55
Сообщение #60



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(Евгений Германович @ Oct 27 2007, 16:52) *
Вообще то делят не шины а память.

Очепятался. Естественно, разделенная память.
Цитата
Уже не к вам а к остальным,вы бы подумали какую гадость воткнуть в QSORT дабы она заработала.

Да ничего втыкать не надо. Я так и не понял, каким компилятором Вы пользуетесь. Применительно к ht picc могу сказать, что прототип qsort в stdlib.h описан, но самой реализации функции в библиотеках нет. Вместо этого дается sources\qsort.c, который можно попытаться включить в проект (придется еще включить sources\malloc.c). Компилятор все это благополучно прожует и создаст требуемые .obj. Останется подобрать контроллер с подходящей по объему RAM, чтобы линкеру понравилось, и решить, стОит ли оно того.
Цитата
А классификацию пиков по длине шины команд я встречал и не раз,это не мое изобретение.

Угу, первенство принадлежит фирме Microchip. Изначально у нее были только контроллеры с 12-битной длиной команд; потом мозгов у контроллеров стало больше, размерность команд пришлось увеличить до 14 бит, еще более потом - до 16. Контроллеры в каждом семействе Microchip условно делила на low-, mid- и high-range по объему мозгов и составу периферии.
Но это было давно. Сейчас - просто подбор по требуемым параметрам. А в своих чартах Microchip всегда указывала в графе "Architecture" 8 бит для PIC16/PIC18. 16 бит в этой графе стали актуальны относительно недавно.
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Oct 29 2007, 13:49
Сообщение #61


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



PIC C Compiler.Про нт не знаю но вы по моему плохо смотрели ,в прототипе есть реализация алгоритма без функции сравнения,я использовал прототип,весьма успешно,для сортировки.
Go to the top of the page
 
+Quote Post

5 страниц V   1 2 3 > » 
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th July 2025 - 23:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.02249 секунд с 7
ELECTRONIX ©2004-2016