Wake of Gods Forum | Форум Во Имя Богов

Full Version: нужна помощь по программированию
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3
А чего qsort не использовал для сортировки?
Смысл был ознакомиться с языком и работой со ссылками и указателями. Решил сделать алгоритм сортировки строк. Естественно, стандартная библиотека скорее всего содержит почти все привычные функции.
Добавлено:
Кое-что пока не ясно. Создал .h-файл без .cpp-аналога, подключил его, но компилятор в упор его не видит:
#include <GeneralUnit.h>
...
4 C:\Dev-Cpp\Examples\Hello\Hello.cpp GeneralUnit.h: No such file or directory.
Тогда по мелочи еще пара вопросов.
1. Зачем менять указатели, если if (strcmp(Arr[LeftInd], MiddleItem) == 0), просто лень отделить было?
2. Зачем скобки в вызовах типа SortStrArr(&Arr[0], (RightInd + 1)); на всякий случай?
Добавлено:
(29.09.2010 02:07)Berserker Wrote: [ -> ]Кое-что пока не ясно. Создал .h-файл без .cpp-аналога, подключил его, но компилятор в упор его не видит:
#include <GeneralUnit.h>
...
А если так:
#include "GeneralUnit.h"
Quote:1. Зачем менять указатели, если if (strcmp(Arr[LeftInd], MiddleItem) == 0), просто лень отделить было?
Машинально при правке поставил. Первоначально было > 0.

Quote:2. Зачем скобки в вызовах типа SortStrArr(&Arr[0], (RightInd + 1)); на всякий случай?
Логически выделил. Зрительно проще воспринимаю выражения так.

Хочу попробовать с классами поработать, написать аналог строк в Делфи со всякими умными фишками, но пока не понимаю, могут ли существовать заголовочные файлы без cpp-аналогов или пусть даже пустой плюсовый файл, но обязателен?
Ясный перец могут. Они вообще никак не связаны для компилятора. Плюсовый фай абсолютно не обязателен.
почитай про темплейты - очень полезно 118
Не путай его. Пусть вначале просто с классами разберется. Шаблоны - это следующий шаг.
Quote:Ясный перец могут. Они вообще никак не связаны для компилятора. Плюсовый фай абсолютно не обязателен.
Я так и думал, спасибо.
Ну попробовал?
Да. BloodShed Dev-C++ (включает в себя gcc с mingw) пишет, что без понятия, где файл. Добавил директорию проекта в список подключаемых. Нулевой эффект. Не принимает файл "GeneralUnit.h" хоть убей, а StringUnit.cpp нормально включается в проект.
Добавлено:
Code:
Êîìïèëÿòîð: Default compiler
Building Makefile: "C:\Dev-Cpp\Examples\Hello\Makefile.win"
Âûïîëíåíèå  make...
make.exe -f "C:\Dev-Cpp\Examples\Hello\Makefile.win" all
g++.exe -D__DEBUG__ -c Hello.cpp -o Hello.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"  -I"C:/Dev-Cpp/include/c++/3.4.2/backward"  -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32"  -I"C:/Dev-Cpp/include/c++/3.4.2"  -I"C:/Dev-Cpp/include"    -g3

Hello.cpp:4:25: GeneralUnit.h: No such file or directory
Hello.cpp:6: error: `pointer' does not name a type
Hello.cpp:8: error: variable or field `ExchangeStrs' declared void
Hello.cpp:8: error: `pchar' was not declared in this scope
Hello.cpp:8: error: `StrA' was not declared in this scope
Hello.cpp:8: error: `pchar' was not declared in this scope
Hello.cpp:8: error: `StrB' was not declared in this scope

Hello.cpp:9: error: initializer expression list treated as compound expression

Hello.cpp:9: error: expected `,' or `;' before '{' token
Hello.cpp:15: error: variable or field `SortStrArr' declared void
Hello.cpp:15: error: `pchar' was not declared in this scope
Hello.cpp:15: error: expected primary-expression before "int"
Hello.cpp:16: error: initializer expression list treated as compound expression
Hello.cpp:16: error: expected `,' or `;' before '{' token
Hello.cpp:50: error: `pchar' has not been declared
Hello.cpp:51: error: ISO C++ forbids declaration of `args' with no type
Hello.cpp: In function `int main(int, int*)':
Hello.cpp:53: error: `pchar' undeclared (first use this function)
Hello.cpp:53: error: (Each undeclared identifier is reported only once for each function it appears in.)
Hello.cpp:53: error: expected `;' before "strs"
Hello.cpp:54: error: `strs' undeclared (first use this function)
Hello.cpp:54: error: `SortStrArr' cannot be used as a function

make.exe: *** [Hello.o] Error 1
Ну попробуй включить с полным путем. Если заработает ищи настройки умолчательного пути к каталогу инклудов. Если нет - выброси свой dev-c++
Добавлено:
По правилам C++ при включении файла в "" он ищется в папке текущего проекта, а в <> ищется в каталоге стандартной библиотеки.
P.S. Ты бы лучше начало файла Hello.cpp поместил, а не полный лог.
P.S.S.
И какая из этих
-I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"
-I"C:/Dev-Cpp/include/c++/3.4.2/backward"
-I"C:/Dev-Cpp/include/c++/3.4.2/mingw32"
-I"C:/Dev-Cpp/include/c++/3.4.2"
-I"C:/Dev-Cpp/include"
    директория твоего проекта?
Quote:По правилам C++ при включении файла в "" он ищется в папке текущего проекта, а в <> ищется в каталоге стандартной библиотеки.
Сменил кавычки - ок.
MSVC компилер - не найдет разницы между
#include <GeneralUnit.h>
#include "GeneralUnit.h"
хотя стоит придерживаться классики
Вообще разница есть. Если совсем точно по стандарту, то "" вначале должен искаться в текущей папке и если не находится, то в системной, а <> наоборот в системной и если нет, то в текущей.
Поэтому кажется, что разницы нет. Но она есть. Создай в папке проекта stdio.h и посмотри какой файл будет включаться в <stdio.h> и "stdio.h". Сделано это, чтобы можно было в частности временно для проекта подменять стандартные библиотеки, не трогая оригинальные библиотечные файлы.
Кстати раньше MSVC не поддерживал стандарт полностью и искал только так как я написал раньше.
Тема вроде подходящая, хотел спросить:
Может кто подсказать хорошую обучалку по с++?
То бишь проверенную, надежную.

Буду благодарен.
Pages: 1 2 3
Reference URL's