Начал изучать С++
Модератор: Модераторы разделов
-
- Сообщения: 158
- ОС: Bluewhite64 12.2
Начал изучать С++
Слез с винды, поставил слаку12 начал изучать с++. Начал с написания простой программы поиска корней квадратного уравнения и тут же столкнулся вот с чем
Код
#include <stdio.h>
#include <math.h>
int main(){
float a,b,c,x1,x2;
printf("Enter a\n");
scanf("%d", &a);
printf("Enter b\n");
scanf("%d", &b);
printf("Enter c\n");
scanf("%d", &c);
if ((b*b-4*a*c) < 0) printf("Error:discrimenant is negative. Solution cannot be found\n");
else printf("x1= %d\n", ((-b+sqrt(b*b-4*a*c))/2*a)) && printf("x2= %d\n", ((-b-sqrt(b*b-4*a*c))/2*a));
return 0;
}
компилятор не видит оператор sqrt
bash-3.1# gcc -o proga proga.cc
/tmp/cc0fnhEp.o: In function `main':
proga.cc:(.text+0x119): undefined reference to `sqrt'
proga.cc:(.text+0x1ad): undefined reference to `sqrt'
/tmp/cc0fnhEp.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: выполнение ld завершилось с кодом возврата 1
В чем я дурак?
Код
#include <stdio.h>
#include <math.h>
int main(){
float a,b,c,x1,x2;
printf("Enter a\n");
scanf("%d", &a);
printf("Enter b\n");
scanf("%d", &b);
printf("Enter c\n");
scanf("%d", &c);
if ((b*b-4*a*c) < 0) printf("Error:discrimenant is negative. Solution cannot be found\n");
else printf("x1= %d\n", ((-b+sqrt(b*b-4*a*c))/2*a)) && printf("x2= %d\n", ((-b-sqrt(b*b-4*a*c))/2*a));
return 0;
}
компилятор не видит оператор sqrt
bash-3.1# gcc -o proga proga.cc
/tmp/cc0fnhEp.o: In function `main':
proga.cc:(.text+0x119): undefined reference to `sqrt'
proga.cc:(.text+0x1ad): undefined reference to `sqrt'
/tmp/cc0fnhEp.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: выполнение ld завершилось с кодом возврата 1
В чем я дурак?
"Ubuntu" is an ancient African word, that means "I can't configure Slackware"
-
- Сообщения: 198
- Статус: Sergeant of Operations, IDF
- ОС: Arch x86_32
Re: Начал изучать С++
Так С или С++?
-
- Сообщения: 158
- ОС: Bluewhite64 12.2
Re: Начал изучать С++
Я занимаюсь по книге Павловской с/c++ пока не разобрался в чем между ними разница, в книге этого не написано.
Если даже я меняю на <cmath> <cstdio> то так тоже не компилируется
"Ubuntu" is an ancient African word, that means "I can't configure Slackware"
-
- Сообщения: 313
- ОС: Debian lenny/sid
Re: Начал изучать С++
gcc -o proga proga.cc -lm
и поверь это Си. от Си++ тут вообще ничо нет.
и поверь это Си. от Си++ тут вообще ничо нет.
P4-3.0, ASUS P5GD1, 1024MB OЗУ, GeForce 6600GT
-
- Сообщения: 158
- ОС: Bluewhite64 12.2
Re: Начал изучать С++
а почему он не видит sqrt?
Сделал вот что получилось
bash-3.1# gcc -o proga proga.cc -lm
/tmp/cc8A63eE.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: выполнение ld завершилось с кодом возврата 1
"Ubuntu" is an ancient African word, that means "I can't configure Slackware"
-
- Сообщения: 313
- ОС: Debian lenny/sid
Re: Начал изучать С++
-lm ключик нужен для этих функций ога)
а тут уже ошибку надо в коде искать. наверное
>scanf("%d", &a);
не нравиться мне это
%f
так надо
а тут уже ошибку надо в коде искать. наверное
>scanf("%d", &a);
не нравиться мне это
%f
так надо
P4-3.0, ASUS P5GD1, 1024MB OЗУ, GeForce 6600GT
-
- Сообщения: 158
- ОС: Bluewhite64 12.2
Re: Начал изучать С++
Ага, стало получаться.Спасибо огромное, Dudraug . Продолжу изучать далее.
"Ubuntu" is an ancient African word, that means "I can't configure Slackware"
-
- Сообщения: 198
- Статус: Sergeant of Operations, IDF
- ОС: Arch x86_32
Re: Начал изучать С++
Код: Выделить всё
>scanf("%d", &a);
Никакой ошибки тут не вижу. Максимум предупреждение. У меня кстати компилится и с %d.
-
- Сообщения: 384
- Статус: Участник
- ОС: Debian GNU/Linux
Re: Начал изучать С++
В выводе корней квадратного уравнения нужно тоже писать %f, а не %d. Так положено (Согласно K&R функция sqrt возвращает значение типа double)
Зачем хорёк пошел в ларёк, зачем барсук полез на сук...
Мораль легко уразуметь: зачем на бал пришёл медведь?
Мораль легко уразуметь: зачем на бал пришёл медведь?
-
- Сообщения: 711
- Статус: Gone with Linux
- ОС: Linux Mint 18.1
Re: Начал изучать С++
void_false писал(а): ↑29.02.2008 03:36Код: Выделить всё
>scanf("%d", &a);
Никакой ошибки тут не вижу. Максимум предупреждение. У меня кстати компилится и с %d.
А при чем тут "компилится"? Компилиться и с "%s" будет наверняка. Проблема в типе данных, которые в функцию передаются
HP 255 G4 A6-6310 + Linux Mint 18.1 + Windoze7 under VmWare + OS X Mavericks under VmWare
-
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
Re: Начал изучать С++
Детский сад -- штаны на лямках. Вот эта ошибка
/tmp/cc0fnhEp.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
происходит от того, что файл с расширением .cc воспринимается компилятором как сырец C++, и соответственно, компилировать его надо не gcc'ём, а g++'ём. Но для автора это не имеет решающего значения, поскольку его код написан на C, а не на C++. Вы когда-нибудь научитесь различать эти языки, или так и будете кодить на суржике?
Про формат вывода со ссылкой на K&R понравилось. Афтар, пеши ищо.
/tmp/cc0fnhEp.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
происходит от того, что файл с расширением .cc воспринимается компилятором как сырец C++, и соответственно, компилировать его надо не gcc'ём, а g++'ём. Но для автора это не имеет решающего значения, поскольку его код написан на C, а не на C++. Вы когда-нибудь научитесь различать эти языки, или так и будете кодить на суржике?
Про формат вывода со ссылкой на K&R понравилось. Афтар, пеши ищо.

-
- Сообщения: 2629
- Статус: Ленивец
- ОС: Arch/Debian.
Re: Начал изучать С++
Uncle_Theodore писал(а): ↑29.02.2008 16:08происходит от того, что файл с расширением .cc воспринимается компилятором как сырец C++, и соответственно, компилировать его надо не gcc'ём, а g++'ём.
Кстати уже n-ный раз на форуме всплывают темы с подобной ошибкой. Когда сырец .cc/.cpp с сишным кодом.
Про формат вывода со ссылкой на K&R понравилось. Афтар, пеши ищо.
А вы с ним первый раз сталкиваетесь? Поищите темы, порадуетесь...
В дисгармонии со вселенной.
-
- Сообщения: 323
- ОС: Debian Lenny
Re: Начал изучать С++
eduard_pustobaev писал(а): ↑29.02.2008 19:53Кстати уже n-ный раз на форуме всплывают темы с подобной ошибкой. Когда сырец .cc/.cpp с сишным кодом.
это все из-за таких учебников как та которую читает автор. и вообще, я как-то плохо отношусь отношусь к книгам вида "программирование на С/С++". по мне книга должна быть или чисто для си, или только для плюсов, т.к. стили программирования в них разные.
-
- Сообщения: 585
- Статус: Программист С++
- ОС: Debian GNU/Linux
Re: Начал изучать С++
(andreas90) писал(а):Я занимаюсь по книге Павловской с/c++ пока не разобрался в чем между ними разница, в книге этого не написано.
В книге не написано, в чем разница между С и С++??? Удивительная книга...
Если ты собираешься изучать С++, то изучай именно его. На современном уровне С и С++ - это два разных языка. Они идут разными путями, поддерживаются и развиваются разными сообществами, уже не обладают (полной) взаимной совместимостью, имеют различающиеся стандарты и поддерживают различные парадигмы программирования. К сожалению, до сих пор бытует мнение о том, что "С и С++ - это почти одно и то же"...
Если тебе интересны книги по языку С++ как таковому, то посмотри список тут:
http://cpp.itrm.ru/?page_id=20
-
- Сообщения: 384
- Статус: Участник
- ОС: Debian GNU/Linux
Re: Начал изучать С++
Это что...
Открываем хвалёный задачник Н. Культин "C/C++ в задачах и примерах" (Санкт-Петербург, "БХВ-Петербург" 2007) Я уже писал где-то - у этого автора есть задачник по Pascal- задачи один к одному (ответы не сравнивал) Но это ладно
Как задачи они сойдут- на безрыбье и рак рыба. Решил какую-то задачу. Надо же решения проанализировать? Надо. Открываю ответы и вижу ответ другой, нежели у меня. Начинаю думать, в чём дело. Я уж потом догадываться начал- там ответы написаны именно на языке С++. И синтаксис иногда совпадает с языком С (задачки простые). А иногда нет. А когда ответ на С++, а где на С, не оговорено. Зато сколько нервов я потратил...
Открываем хвалёный задачник Н. Культин "C/C++ в задачах и примерах" (Санкт-Петербург, "БХВ-Петербург" 2007) Я уже писал где-то - у этого автора есть задачник по Pascal- задачи один к одному (ответы не сравнивал) Но это ладно
Как задачи они сойдут- на безрыбье и рак рыба. Решил какую-то задачу. Надо же решения проанализировать? Надо. Открываю ответы и вижу ответ другой, нежели у меня. Начинаю думать, в чём дело. Я уж потом догадываться начал- там ответы написаны именно на языке С++. И синтаксис иногда совпадает с языком С (задачки простые). А иногда нет. А когда ответ на С++, а где на С, не оговорено. Зато сколько нервов я потратил...
Зачем хорёк пошел в ларёк, зачем барсук полез на сук...
Мораль легко уразуметь: зачем на бал пришёл медведь?
Мораль легко уразуметь: зачем на бал пришёл медведь?
-
- Сообщения: 323
- ОС: Debian Lenny
Re: Начал изучать С++
что то ни разу не видел упоминания о самой хорошей книге по С/С++. Как программировать на С++, для новичка самое оно, моя первая книга именно она помогала мне во многом разобраться. книга по идее по C++, но на самом деле там и C, и C++... это конечно не хорошо, но это самое лучшее из книг по C/C++. а после неё можно уже и кернигана, и страуструпа почитать.
а можете показать задачки и что за ответы на C++. мне просто интересно что вы под этим подразумеваете?
promov писал(а): ↑01.03.2008 00:06Как задачи они сойдут- на безрыбье и рак рыба. Решил какую-то задачу. Надо же решения проанализировать? Надо. Открываю ответы и вижу ответ другой, нежели у меня. Начинаю думать, в чём дело. Я уж потом догадываться начал- там ответы написаны именно на языке С++. И синтаксис иногда совпадает с языком С (задачки простые). А иногда нет. А когда ответ на С++, а где на С, не оговорено. Зато сколько нервов я потратил...
а можете показать задачки и что за ответы на C++. мне просто интересно что вы под этим подразумеваете?
-
- Сообщения: 384
- Статус: Участник
- ОС: Debian GNU/Linux
Re: Начал изучать С++
Сейчас прибежит, не скажу кто... Опять начнётся "За базар не отвечаешь"... и прочее. Тьфу.
...Смотреть здесь задачник Н. Культин "C/C++ в задачах и примерах" (Санкт-Петербург, "БХВ-Петербург" 2007)
...Смотреть здесь задачник Н. Культин "C/C++ в задачах и примерах" (Санкт-Петербург, "БХВ-Петербург" 2007)
Зачем хорёк пошел в ларёк, зачем барсук полез на сук...
Мораль легко уразуметь: зачем на бал пришёл медведь?
Мораль легко уразуметь: зачем на бал пришёл медведь?
-
- Сообщения: 335
- ОС: OpenSuse 11.1
Re: Начал изучать С++
promov писал(а): ↑01.03.2008 01:13Сейчас прибежит, не скажу кто... Опять начнётся "За базар не отвечаешь"... и прочее. Тьфу.
...Смотреть здесь задачник Н. Культин "C/C++ в задачах и примерах" (Санкт-Петербург, "БХВ-Петербург" 2007)
conio.h насколько я помню это хедер из борландовского RTL , и приведенный пример все таки на языке С
В сознательных действиях должен присутствовать существенный неалгоритмический компонент.
Roger Penrose,The Emperor's New Mind
Roger Penrose,The Emperor's New Mind
-
- Сообщения: 384
- Статус: Участник
- ОС: Debian GNU/Linux
Re: Начал изучать С++
Значит, я ошибся.
Зачем хорёк пошел в ларёк, зачем барсук полез на сук...
Мораль легко уразуметь: зачем на бал пришёл медведь?
Мораль легко уразуметь: зачем на бал пришёл медведь?
-
- Сообщения: 323
- ОС: Debian Lenny
Re: Начал изучать С++
promov писал(а): ↑01.03.2008 01:13Сейчас прибежит, не скажу кто... Опять начнётся "За базар не отвечаешь"... и прочее. Тьфу.
...Смотреть здесь задачник Н. Культин "C/C++ в задачах и примерах" (Санкт-Петербург, "БХВ-Петербург" 2007)
я от C++ там вообще ничего не увидел. только лишь борланодвский устаревший хёдр.
-
- Сообщения: 158
- ОС: Bluewhite64 12.2
Re: Начал изучать С++
А ну я все понял, действительно надо компилить g++ если пишешь на с++.
Вот что пишет автор книги "Linux полное руководство" Колисниченко Д.Н.
"
Вызов gcc
Вы написали свою программу на c++? Нет проблем: компиляторы С и С++ являются интегрированными. Чтобы сообщить компилятору на каком языке вы написали свою программу, нужно указать определенную опцию при вызове компилятора. Но можно поступить проще; по умолчанию компилятор считает, что файлы с расширением .с написаны на языке С, файлы с расширением .C .cc .cXX на языках С++, а файлы с расширением .s на языке ассемблера.
Общие опции
Из общих опций наиболее интересны три: -x -c -o
C помощью опций можно указать язык, на котором написан исходный код, например
gcc -x c hello.c
В качестве языка программы вы можете указать:
с, если ваша программа написана на С
objective_c если программа написана на Objective C
c-header если программа является заголовком С
с++ если программа написана на С++
assembler, если вы написали программу на ассемблере"
Дан один пример
gcc -o helloworld helloworld.c
И не слова о g++
Я пытался сделать как написано в книге. Сам начал читать С/С++ Павловской всего 2 недели назад, до этого программированием вообще не занимался и юзал винду, не судите строго.
В общем, переписал я на с++, скомпилил вот так g++ -o proga proga.cc и все заработало.
Я конечно, парень необразованный еще, у меня щас 4 книги по c/c++ и ни в одной я не нашел главы "В чем различие C и C++", догадывюсь сам по различию в заголовочных файлах директив препроцессора.
Вот что пишет автор книги "Linux полное руководство" Колисниченко Д.Н.
"
Вызов gcc
Вы написали свою программу на c++? Нет проблем: компиляторы С и С++ являются интегрированными. Чтобы сообщить компилятору на каком языке вы написали свою программу, нужно указать определенную опцию при вызове компилятора. Но можно поступить проще; по умолчанию компилятор считает, что файлы с расширением .с написаны на языке С, файлы с расширением .C .cc .cXX на языках С++, а файлы с расширением .s на языке ассемблера.
Общие опции
Из общих опций наиболее интересны три: -x -c -o
C помощью опций можно указать язык, на котором написан исходный код, например
gcc -x c hello.c
В качестве языка программы вы можете указать:
с, если ваша программа написана на С
objective_c если программа написана на Objective C
c-header если программа является заголовком С
с++ если программа написана на С++
assembler, если вы написали программу на ассемблере"
Дан один пример
gcc -o helloworld helloworld.c
И не слова о g++
Я пытался сделать как написано в книге. Сам начал читать С/С++ Павловской всего 2 недели назад, до этого программированием вообще не занимался и юзал винду, не судите строго.
В общем, переписал я на с++, скомпилил вот так g++ -o proga proga.cc и все заработало.
Я конечно, парень необразованный еще, у меня щас 4 книги по c/c++ и ни в одной я не нашел главы "В чем различие C и C++", догадывюсь сам по различию в заголовочных файлах директив препроцессора.
"Ubuntu" is an ancient African word, that means "I can't configure Slackware"
-
- Сообщения: 73
- ОС: KUbuntu 8.04 Hardy Heron
Re: Начал изучать С++
andreas90, gcc скажет, или g++. Какой из них где применять, уже написали выше.
Выдачу компилятора в студию.
Выдачу компилятора в студию.
-
- Сообщения: 585
- Статус: Программист С++
- ОС: Debian GNU/Linux
Re: Начал изучать С++
(andreas90) писал(а):... у меня щас 4 книги по c/c++ и ни в одной я не нашел главы "В чем различие C и C++"...
И это идет только в минус авторам этих книг! Различия между С и С++ знать необходимо! И различия эти, надо сказать, весьма очевидны, поэтому лично я с большим недоверием отношусь к книгам по "С/С++". В моей библиотеке таких вообще нет, и я рад.
-
- Сообщения: 636
- ОС: Debian GNU/Linux
Re: Начал изучать С++
andreas90 писал(а): ↑02.03.2008 14:13А ну я все понял, действительно надо компилить g++ если пишешь на с++.
Вот что пишет автор книги "Linux полное руководство" Колисниченко Д.Н.
"
Вызов gcc
Вы написали свою программу на c++? Нет проблем: компиляторы С и С++ являются интегрированными. Чтобы сообщить компилятору на каком языке вы написали свою программу, нужно указать определенную опцию при вызове компилятора. Но можно поступить проще; по умолчанию компилятор считает, что файлы с расширением .с написаны на языке С, файлы с расширением .C .cc .cXX на языках С++, а файлы с расширением .s на языке ассемблера.
Общие опции
Из общих опций наиболее интересны три: -x -c -o
C помощью опций можно указать язык, на котором написан исходный код, например
gcc -x c hello.c
В качестве языка программы вы можете указать:
с, если ваша программа написана на С
objective_c если программа написана на Objective C
c-header если программа является заголовком С
с++ если программа написана на С++
assembler, если вы написали программу на ассемблере"
Дан один пример
gcc -o helloworld helloworld.c
И не слова о g++
g++ отличается от gcc тем, что при вызове компоновщика указывает некоторые дополнительные библиотеки, специфичные для С++-кода. Например для использования iostreams. Можно их и руками указать, но через g++ удобнее.
-
- Сообщения: 158
- ОС: Bluewhite64 12.2
Re: Начал изучать С++
v04bvs,приведите пример как руками указать дополнительные библиотеки
"Ubuntu" is an ancient African word, that means "I can't configure Slackware"
-
- Сообщения: 227
- ОС: Gentoo o_O
Re: Начал изучать С++
если я правильно понял вопрос то чтото вроде:
Код: Выделить всё
#include "путь к заголовочному файлу"
PS
да простят меня за оффтоп
wzrd, если вам хочется просто упоминания об этой книге...
То я например сейчас её читаю (только у меня 5-е малое издание) пока вроде вполне доступно.
Купил именно из-за того что гдето о ней именно как о "книге для самых самых начинающих" хорошие отзывы слышал
НЕ ПАНИКУЙ © ^_~
-
- Сообщения: 158
- ОС: Bluewhite64 12.2
Re: Начал изучать С++
--=Civil696=-- писал(а): ↑02.03.2008 19:07
если я правильно понял вопрос то чтото вроде:
Код: Выделить всё
#include "путь к заголовочному файлу"
Я именно так и делал, но gcc(ом) программа у меня не компилировалась. Только g++
"Ubuntu" is an ancient African word, that means "I can't configure Slackware"
-
- Сообщения: 636
- ОС: Debian GNU/Linux
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Начал изучать С++
+1
разница вот в чём: С++ это ООП, а просто Си - нет. Ну это грубо, конечно, так, приближённо.
-
- Сообщения: 158
- ОС: Bluewhite64 12.2
Re: Начал изучать С++
Да, вы правы. gcc -o proga proga.cc -lstdc++ действительно работает. Буду знать на будущее. Вы говорите "g++ отличается от gcc тем, что при вызове компоновщика указывает некоторые дополнительные библиотеки, специфичные для C++ кода". Если я вас правильно понял, это основное отличие gcc от g++? А сколько всего этих отличных библиотек и как они называются?
Расшифруйте, пожалуйста, мне необразованному что такое ОПП
"Ubuntu" is an ancient African word, that means "I can't configure Slackware"