Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Обучение и начало програмирования на С++

Автор: WiseAlex
Дата сообщения: 11.08.2005 20:05
vserd
остается развести руками - я всегда знал, что vc6 не любит stl, но чтобы настолько... msdn говорит о такой проблеме для vc5, но не для vc6. Были у vc проблемы совмещения stl и mfc - попробуй чисто консольное приложение
Автор: vserd
Дата сообщения: 12.08.2005 10:34
wiwiw

Цитата:
#include <string>

Спасибо!!!
С ним заработало.

Хотя до этого было #include <string.h> :((((
Автор: TheChampion
Дата сообщения: 12.08.2005 12:55
vserd
Стандарт ISO 14882. Теперь заголовки без .h, а все библиотечные классы находятся в пространстве имен std.

Лично для меня странно, что есть люди, которые об этом не знают. Он же принят 7 лет назад
Автор: vserd
Дата сообщения: 12.08.2005 17:36
TheChampion

Цитата:
Стандарт ISO 14882. Теперь заголовки без .h, а все библиотечные классы находятся в пространстве имен std.

До стандарта пока не дорос :(
Я не волшебник, я только учусь :) Так что набиваю шишки и разведываю местоположение граблей на собственном опыте :))
Автор: sket4
Дата сообщения: 12.08.2005 18:30
TheChampion
еще от компилеров зависит(чаще всего), где-то с расширением заголовка, где-то без...
где-то требуется using namespace std, где-то - нет %)))
Автор: TheChampion
Дата сообщения: 12.08.2005 18:46
sket4

Цитата:
еще от компилеров зависит(чаще всего), где-то с расширением заголовка, где-то без...

Только в древних компиляторах.

Цитата:
где-то требуется using namespace std, где-то - нет %)))

Да нигде не требуется. См. Страуструпа.
Автор: EAS
Дата сообщения: 12.08.2005 23:47
TheChampion

Цитата:
Да нигде не требуется

Может все-таки наоборот?

Цитата:
См. Страуструпа.

Как раз по этому поводу Страуструп пишет, что глобальный using namespace std есть не очень красиво, а сам он опускает std:: только для лаконичности кода (как и #include).
Если где-то есть обратное утверждение, было бы интересно взглянуть (получить более точные координаты, главу хотя бы); может я и ошибаюсь


Цитата:
еще от компилеров зависит(чаще всего), где-то с расширением заголовка, где-то без

Согласно ISO 14482:1998 (17.4.1.2) [lib.headers], стандартные С++ заголовки именуются без .h. Средства Standard С Library предоставляются тоже через заголовки без .h (с префиксом c-, e.g. <cstdlib>, <cmath>) в пространстве имен std, и предпочтительно использовать именно их.
При этом, для совместимости с Си в большинстве компиляторов старые заголовки (<stdlib.h>, <math.h> etc) оставлены, естественно в глобальном пр-ве имен. Отсюда и возникают различные варианты.
Автор: TheChampion
Дата сообщения: 13.08.2005 07:47
EAS

Цитата:
Да нигде не требуется

Да, именно так. Ты прав насчет Страуструпа. Он так и пишет. using namespace std; не надо использовать, надо предварять заимствования префиксом std::.


Цитата:
естественно в глобальном пр-ве имен. Отсюда и возникают различные варианты.

Совместимость совместимостью, но не надо в 2005 году писать со стандартом 1995 года.
Автор: OtD
Дата сообщения: 15.08.2005 13:55
Всем
Кто что может сказать за STLport от SGI?
Пробовал STLport, вылазеют глюки, а при переключении на STL от RW(Rogue Wave) всё ровно в BCB6.
И ещё вопрос: какая STL используется в VC6, VC7 и т.д.? Заранее спасибо.
Автор: KapralBel
Дата сообщения: 16.08.2005 14:01
Никто не подскажет как получить скорость ИНет-соединения (корое выводится в свойствах этого соединения в SysTray)
Автор: sket4
Дата сообщения: 21.08.2005 11:56
TheChampion
да, ты бы логически подумал, либо в коде везде расставлять std::, там, где требуется ввод/вывод, либо одной строчкой решить все проблемы...

да, еще рекоммендуют использовать пространство имен std; там, где это необходимо, но, опять же, не проще ли один раз написать строчку в начале программы, все равно ведь код <iostream> инклудится, куда тут от него денешься, а мороки больше...

EAS
стандарты, не стандарты, какая разница, я пользовался devc++ и gcc, один требует .h префикс(гцц), другой - нет...и оба ругаются и не могут найти такого файла, если не соответствует, насчет стандартов с++, это вообще черная дыра..
Автор: OtD
Дата сообщения: 25.08.2005 18:30
За глюк в STLport
Кому не трудно, проверьте.

Код:
# include <fstream>
# include <iostream>

void main()
{
fstream f1("Test1.txt", ios::in|ios::out);
if(!f1) cout << "Not file";
}
Автор: Jeck
Дата сообщения: 29.09.2005 10:43
У меня просьба, я начал изучать C++. Может кто-то знает где можно найти упражнения. Хочу потренероваться нечего нормальнгого найти не могу. Спасибо всем.
Автор: WiseAlex
Дата сообщения: 29.09.2005 11:17
Jeck
посмотри у страуструпа - там много разных упражнений
Автор: Jeck
Дата сообщения: 29.09.2005 22:44
WiseAlex
Спасибо, если можно дайте ссылку, пожалуйсто.
Автор: WiseAlex
Дата сообщения: 30.09.2005 09:37
Jeck
по поводу поиска книг есть соответствующие топики - см. Путеводитель
Автор: sverhmonstr
Дата сообщения: 30.09.2005 17:02
Мат. функция разложена в ряд. Функция на C должна подсчитывать сумму при заданном n=константа. Например, 10. Отдельно создана функция для подсчёта факториала.

Код: float ryad(float l);
float ryad(float l)
{
        float s=0;
        for(int k=0; k<=n; k++)
        {
            s=s+pow(log(3),k)*pow(l,k)/factorial(k);
        }
        return s;
}
Автор: sket4
Дата сообщения: 30.09.2005 19:47

Цитата:

float ryad(float l);
float ryad(float l)
{
int k, n=10;
float s=0;
for(k=0; k<=n; k++)
{
s=s+pow(log(3),k)*pow(l,k)/factorial(k);
}
return s;
}

int main() {
    ryad(5);
    
    return 0;
}


что-то около этого, но нужно включить заголовок с функцией pow, должна быть объявлена и написана сама функция factiorial+функция log.

удачи.
Автор: sverhmonstr
Дата сообщения: 30.09.2005 20:11
sket4
#include <math.h> - pow там есть. factorial - объявлена, написана, работает.
Автор: sverhmonstr
Дата сообщения: 01.10.2005 13:45
Вопрос снимается, проблема была в делении на факториал нуля
Автор: KADABRA
Дата сообщения: 01.10.2005 16:35
sverhmonstr

Цитата:
Вопрос снимается, проблема была в делении на факториал нуля

И в чём же была проблема, если факториал нуля - это 1 ?
Или же функция факториала была плохо написана?
Автор: sverhmonstr
Дата сообщения: 01.10.2005 16:41
KADABRA
Была неправильно написана

Добавлено:
Ещё вопрос
Необходимо объявить массив с длиной, получаемой в результате работы функции. То есть отдельная функция задаёт целое число, полученное значения является длиной массива в main.
int main[переменная, полученная из некоторой функции];
Насколько мне известно, в качестве длины массива допускается только константа
Как можно это обойти, без использования динамический массивов? С попощью указателей, каких-нибудь хитростей?
Автор: aleoizi
Дата сообщения: 01.10.2005 19:41
Честно говоря не знаю что такое динамический массив, но я делал это так:

int f(void)
{
return 5;
}


int main()
{
int *masiv = new int [f()];

}

ну и получается массивчик int masiv[5]

Интересная тема кстати, может кто что нибудь поизящнее предложет?
Автор: KADABRA
Дата сообщения: 02.10.2005 09:47
aleoizi

Цитата:
int f(void)
{
return 5;
}


int main()
{
int *masiv = new int [f()];

}


а не проще:
int main()
{
int * masiv = new int [5];
// и получится динамический массив из 5 елементов.
// можно и так:
// int size = 5;
// int * masiv = new int [size];
// это для примера, что можно использовать переменные.
}
Автор: sverhmonstr
Дата сообщения: 02.10.2005 11:59
KADABRA
aleoizi
Спасибо, поставленную задачу таким образом выполнил. Хотя не понял до конца принципа работы с динамическими массивами - если дадите ссылку на какую-нибудь статью на эту тему или на топик на форуме, буду премного благодарен :)
Автор: aleoizi
Дата сообщения: 02.10.2005 14:16
Где я про это читал не помню, помню что оператор new выделяет память в куче (память, которая содержит мусор, неиспользуемые данные), а new[] - соответственно массив.
Операторы delete и delete[] - уничтожают память, выделенную операторами new и new[].


Цитата:
Хотя не понял до конца принципа работы с динамическими массивами

А я не понял чего ты не понял
К сожалению ссылок не знаю по теме.

KADABRA
Ну конечно можно и так, просто человек просил показать:

Цитата:
Необходимо объявить массив с длиной, получаемой в результате работы функции.


Удачи.
Автор: sverhmonstr
Дата сообщения: 02.10.2005 20:05
aleoizi
То есть после выделения памяти под динамический массив я должен уничтожить лишнее? Не совсем понял всё-таки :)
Автор: KADABRA
Дата сообщения: 02.10.2005 22:49
aleoizi

Цитата:
Ну конечно можно и так, просто человек просил показать:

Цитата:
Необходимо объявить массив с длиной, получаемой в результате работы функции.

Упс, не заметил. Ну тогда у всё было правильно. Извеняюсь, если сбил с толку.
Автор: Xarde
Дата сообщения: 03.10.2005 06:54
sverhmonstr
Я бы рекомендовал для начала почитать начальные книги по программированию, т.к. из твоих слов видно, что ты очень плохо понимаешь, что ты хочешь сделать и как примерно это реализовать в коде.


Цитата:
То есть после выделения памяти под динамический массив я должен уничтожить лишнее? Не совсем понял всё-таки

Теперь о твоём вопросе. Во-первых, чтобы не было лишнего, надо знать (изначально или вычислять, как у тебя), сколько элементов должно содержаться в массиве. Во-вторых, удалять массив (или динамическую переменную) при помощи delete надо в том случае, если:
а) память под неё выделялась явно (твоими усилиями при помощи оператора new);
б) массив (переменная) больше не нужен.
В-третьих, если тебе вдруг понадобится изменить размерность массива, то потребуется удалить имеющийся и создать новый. Чтобы при этом не потерять данные (ну, вдруг там что-то важное ), надо сначала создать новый массив, затем скопировать в него элементы старого и только потом удалять старый массив.

P.S. Рекомендую посмотреть queue и deque из стандартной библиотеки шаблонов (STL), который реализуют динамические массивы. При использовании их тебе не потребуется менять размерность вручную - все делает код шаблона. Хотя, это может быть для тебя рановато.
P.P.S. Если что более конкретно интересует - пиши в ФП, попробую объяснить и помочь.
Автор: Jeck
Дата сообщения: 05.10.2005 10:10
Привет. У меня вопрос как в Линуксе указать путь к библиотеке, при копмпиляции выскакивает сообщение что не найден путь(и просит показать где находится эта библиотека).Спасибо.

Страницы: 12345678910111213141516171819202122

Предыдущая тема: DELPHI. Счетчик ячеек со значенями, значений ячеек


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.