Не компилируется программа

Модератор: Модераторы разделов

Аватара пользователя
andreas90
Сообщения: 158
ОС: Bluewhite64 12.2

Не компилируется программа

Сообщение andreas90 »

Пример из книжки, решил разобрать, но не компилируется. Код
#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std;
double square(double doubleVar)
{
return doubleVar * doubleVar;
}
double sumSequence(void)
{
double accumulator= 0.0;
for(;;)
{
double dValue = 0;
cout <<"Введите следующее число: ";
cin >> dValue;
if (dValue < 0)
{
break;
}
double value = square(dValue);
accumulator = accumulator + value;
}
return accumulator;
}

Команда компиляции g++ -o simplefunc simplefunc.cc
На выходе получаю
bash-3.1$ g++ -o simplefunc simplefunc.cc
/usr/lib/gcc/x86_64-pc-linux/4.1.2/../../../../lib/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: выполнение ld завершилось с кодом возврата 1

В чем ошибка?
"Ubuntu" is an ancient African word, that means "I can't configure Slackware"
Спасибо сказали:
Аватара пользователя
drag0n
Сообщения: 156
Статус: Дракон-линуксоид
ОС: Slackware Linux

Re: Не компилируется программа

Сообщение drag0n »

О_о. А эта.... функция main где?? :wacko:
После каталога /etc понимаешь, что реестр - место, откуда нормальными не возвращаются.
Спасибо сказали:
Аватара пользователя
andreas90
Сообщения: 158
ОС: Bluewhite64 12.2

Re: Не компилируется программа

Сообщение andreas90 »

drag0n писал(а):
05.03.2008 13:50
О_о. А эта.... функция main где?? :wacko:

Нет ее там ( в примере)
"Ubuntu" is an ancient African word, that means "I can't configure Slackware"
Спасибо сказали:
Olegator
Сообщения: 2493
ОС: SuseLinux 11.2 KDE 4.3

Re: Не компилируется программа

Сообщение Olegator »

andreas90 писал(а):
05.03.2008 13:56
drag0n писал(а):
05.03.2008 13:50
О_о. А эта.... функция main где?? :wacko:

Нет ее там ( в примере)

выкидывай эту книжку в помойку и покупай другую, я могу посоветовать "Объектно орентированное программирование в с++" (Лафоре)
Спасибо сказали:
Аватара пользователя
andreas90
Сообщения: 158
ОС: Bluewhite64 12.2

Re: Не компилируется программа

Сообщение andreas90 »

Olegator писал(а):
05.03.2008 14:05
andreas90 писал(а):
05.03.2008 13:56
drag0n писал(а):
05.03.2008 13:50
О_о. А эта.... функция main где?? :wacko:

Нет ее там ( в примере)

выкидывай эту книжку в помойку и покупай другую, я могу посоветовать "Объектно орентированное программирование в с++" (Лафоре)

Я ее скачал, но она в формате djvu я не знаю как этот формат открыть
"Ubuntu" is an ancient African word, that means "I can't configure Slackware"
Спасибо сказали:
Olegator
Сообщения: 2493
ОС: SuseLinux 11.2 KDE 4.3

Re: Не компилируется программа

Сообщение Olegator »

andreas90 писал(а):
05.03.2008 14:13
Olegator писал(а):
05.03.2008 14:05
andreas90 писал(а):
05.03.2008 13:56
drag0n писал(а):
05.03.2008 13:50
О_о. А эта.... функция main где?? :wacko:

Нет ее там ( в примере)

выкидывай эту книжку в помойку и покупай другую, я могу посоветовать "Объектно орентированное программирование в с++" (Лафоре)

Я ее скачал, но она в формате djvu я не знаю как этот формат открыть

надо программу для просмотра djvu установить, процесс установки зависит от дстрибутива
Спасибо сказали:
Аватара пользователя
deninok
Сообщения: 585
Статус: Программист С++
ОС: Debian GNU/Linux

Re: Не компилируется программа

Сообщение deninok »

andreas90 писал(а):
05.03.2008 13:56
drag0n писал(а):
05.03.2008 13:50
О_о. А эта.... функция main где?? :wacko:

Нет ее там ( в примере)

Ну просто пример сокращенный. Функция main() должна быть всегда. Когда программа запускается, это значит, что мы вошли в функцию main(), а когда программа завершилась, это значит, что мы вышли из функции main(). Ситуация может измениться только в многопоточной программе, но даже там без main() никак.
Спасибо сказали:
Аватара пользователя
andreas90
Сообщения: 158
ОС: Bluewhite64 12.2

Re: Не компилируется программа

Сообщение andreas90 »

Тяжело мне дается программирование на c++, напомню что начал изучать недавно, до этого вообще не программировал ни на чем,
не знал вообще что это. Поэтому начинаю с азов, тех что каждый из вас знал в школьные годы.
Я выучил точно определение функции, функция(в с++) - это логически обособленная часть кода с++ имеющая вид
<тип возвращаемого значения> name (<аргументы функции>)
Мне проще понять по аналогии с математикой. Там тоже есть функция n-переменных, которая возвращает значение. Например функция двух переменных z=x+y. Поправьте меня если такое мое сравнение (понимание) функции в программировании неверно
Мне очень важно это понять. К тому же, я не понимаю как в программировании она работает.
Так вот что мне непонятно. Возьмем простую программу, которую я умею теперь писать наизусть, но не совсем понимаю как работает функция main (int args, char* pszArgs[])
Код
#include <cstdio>
#include <cmath>
#include <cstdlib>
using namespace std;
float main(int args, char* pszArgs[])
{
int a,b,c;
float x1,x2;
printf("enter a\n");
scanf("%d", &a);
printf("enter b\n");
scanf("%d", &b);
printf("enter c\n");
scanf("%d", &c);
float z = (b*b-4*a*c);
if ( z < 0 )
{
printf( "Error: Discrimemamt is negative\n" );
return 0;
}
else
{
printf("x1= %f\n " , x1 = ((-b + sqrt(b*b - 4*a*c))/(2*a)));
printf("x2= %f\n " , x2 = (( b + sqrt(b*b - 4*a*c))/(2*a)));

}

Если я правильно понял (если нет, поправьте) функция в программировании возвращает значение, и в данной программе
тип возвращаемого значения int (перед main). В данной программе рассчитываются следующие значения - x1, x2.
Так вот, зачем перед main указан тип int, если в теле функции уже указан тип float x1, x2; ведь на выходе программа выдает (возвращает именно эти значения?
"Ubuntu" is an ancient African word, that means "I can't configure Slackware"
Спасибо сказали:
Olegator
Сообщения: 2493
ОС: SuseLinux 11.2 KDE 4.3

Re: Не компилируется программа

Сообщение Olegator »

andreas90 писал(а):
05.03.2008 21:47
Тяжело мне дается программирование на c++, напомню что начал изучать недавно, до этого вообще не программировал ни на чем,
не знал вообще что это. Поэтому начинаю с азов, тех что каждый из вас знал в школьные годы.
Я выучил точно определение функции, функция(в с++) - это логически обособленная часть кода с++ имеющая вид
<тип возвращаемых значения> name (<аргументы функции>)
Мне проще понять по аналогии с математикой. Там тоже есть функция n-переменных, которая возвращает значение. Например функция двух переменных z=x+y. Поправьте меня если такое мое сравнение (понимание) функции в программировании неверно
Мне очень важно это понять. К тому же, я не понимаю как в программировании она работает.
Так вот что мне непонятно. Возьмем простую программу, которую я умею теперь писать наизусть, но не совсем понимаю как она работает.
Код
#include <cstdio>
#include <cmath>
#include <cstdlib>
using namespace std;
float main(int args, char* pszArgs[])
{
int a,b,c;
float x1,x2;
printf("enter a\n");
scanf("%d", &a);
printf("enter b\n");
scanf("%d", &b);
printf("enter c\n");
scanf("%d", &c);
float z = (b*b-4*a*c);
if ( z < 0 )
{
printf( "Error: Discrimemamt is negative\n" );
return 0;
}
else
{
printf("x1= %f\n " , x1 = ((-b + sqrt(b*b - 4*a*c))/(2*a)));
printf("x2= %f\n " , x2 = (( b + sqrt(b*b - 4*a*c))/(2*a)));

}

Если я правильно понял (если нет, поправьте) функция в программировании возвращает значение, и в данной программе
тип возвращаемого значения int (перед main). В данной программе рассчитываются следующие значения - x1, x2.
Так вот, зачем перед main указан тип int, если в теле функции уже указан тип float x1, x2; ведь на выходе программа выдает (возвращает именно эти значения?

не потрудитесь прочитать книгу которую я вам посоветовал, там на все ваши вопросы есть ответы. а функция main всегда возвращает тип int, эта функция связывает вашу программу с другими программами, которые возможно будут её запускать, вы сами должны позаботиться о значении которое она возвращает, если вы в ней возвращаете 0, то внешнии программы будут думать что ваша программа выполнилась без ошибок, при любом другом значении будет считаться что произошла ошибка. и вообще вы ерунду пишете, это не с++, а с. где вы эти примеры берёте? больше даже не заглядывайте туда. на счёт ощибки или нет погу быть не прав, скорее всего просто возвращается значение внешним программам, но я думаю если я не прав то меня поправят.
Спасибо сказали:
Аватара пользователя
wzrd
Сообщения: 323
ОС: Debian Lenny

Re: Не компилируется программа

Сообщение wzrd »

andreas90 писал(а):
05.03.2008 21:47
Тяжело мне дается программирование на c++, напомню что начал изучать недавно, до этого вообще не программировал ни на чем,
не знал вообще что это. Поэтому начинаю с азов, тех что каждый из вас знал в школьные годы.
Я выучил точно определение функции, функция(в с++) - это логически обособленная часть кода с++ имеющая вид
<тип возвращаемого значения> name (<аргументы функции>)
Мне проще понять по аналогии с математикой. Там тоже есть функция n-переменных, которая возвращает значение. Например функция двух переменных z=x+y. Поправьте меня если такое мое сравнение (понимание) функции в программировании неверно
Мне очень важно это понять. К тому же, я не понимаю как в программировании она работает.
Так вот что мне непонятно. Возьмем простую программу, которую я умею теперь писать наизусть, но не совсем понимаю как работает функция main (int args, char* pszArgs[])
Код
.....

Если я правильно понял (если нет, поправьте) функция в программировании возвращает значение, и в данной программе
тип возвращаемого значения int (перед main). В данной программе рассчитываются следующие значения - x1, x2.
Так вот, зачем перед main указан тип int, если в теле функции уже указан тип float x1, x2; ведь на выходе программа выдает (возвращает именно эти значения?

а у меня наоборот. мы щас как раз функции по математике проходим, я бы их наверное не понял так хорошо, если бы не знал что такое функция в программировании.
немножко поправлю вас. значение которое возвращает функция может быть только ОДНО. вспомните в математике ведь тоже так... получается что ваша функция main не может возвращать два значения x1 и x2. вообще по стандарту функция main всегда возвращает 0, при успешном завершении. чтобы возвратить значение функции применяется оператор return (посмотрите свой код). и вообще плохая наверное у вас книжка, если у вас возникают такие вопросы.




Добавлено: что то я долго писал... и не заметил сообщение выше, а там уже все сказано что я хотел.
Спасибо сказали:
Аватара пользователя
andreas90
Сообщения: 158
ОС: Bluewhite64 12.2

Re: Не компилируется программа

Сообщение andreas90 »

Тем не менее я не ничего не понял, и не получил ответ на свой вопрос. То есть как возвращает ноль, если получается 2 значения
bash-3.1$ ./proga
enter a
1
enter b
2
enter c
-3
x1= 1.000000
x2= 3.000000
bash-3.1$
Хорошо, буду понимать так int main () возвращает 0 если программа выполнена успешно, зачем тогда задается return 0 вручную
если программа может не выполнится успешно и возвратить 1, а мы задали return 0?
P.S. прошу понять мою тормознутость, ибо говорю что не программировал вообще ( хотя высшая математика идет на 4)

Olegator вы пишете что это не с++, а с. НО книжка называется с++ для чайников написано что этот пример на с++
"Ubuntu" is an ancient African word, that means "I can't configure Slackware"
Спасибо сказали:
Olegator
Сообщения: 2493
ОС: SuseLinux 11.2 KDE 4.3

Re: Не компилируется программа

Сообщение Olegator »

я щас с капслоком начну писать!!! функция main возвращает значение внешнему окружению, а не ваш ответ.

Код: Выделить всё

#include<iostream>
#include <cmath>
using namespace std;
int main(int argc, char *argv[])
{
  int a,b,c;
  float x1,x2;
  cout<<"enter a\n";
  cin>>a;
  cout<<"enter b\n";
  cin>>b;
  cout<<"enter c\n";
  cin>>c;
 float z = (b*b-4*a*c);
 if ( z < 0 )
  {
    cout<< "Error: Discrimemamt is negative\n";
    return 0;
  }
  else
  {
    cout<<"x1= "<< ((-b + sqrt(b*b - 4*a*c))/(2*a)<<endl;
    cout<<"x2="<< (( b + sqrt(b*b - 4*a*c))/(2*a);
    return 0;
   }
}
Спасибо сказали:
Аватара пользователя
wzrd
Сообщения: 323
ОС: Debian Lenny

Re: Не компилируется программа

Сообщение wzrd »

andreas90 писал(а):
05.03.2008 22:47
Тем не менее я не ничего не понял, и не получил ответ на свой вопрос. То есть как возвращает ноль, если получается 2 значения
bash-3.1$ ./proga
enter a
1
enter b
2
enter c
-3
x1= 1.000000
x2= 3.000000
bash-3.1$
Где здесь ноль? Объясните как вы понимаете, и прошу также еще кого-нибудь написать свое понимание чтобы понять с разных сторон.
P.S. прошу понять мою тормознутость, ибо говорю что не программировал вообще ( хотя высшая математика идет на 4)

эти значения результат выполнения программы, то есть программа напечатала значения x1 и x2. как уже сказали выше возвращаемое значение нужно только приложению, которое вызвало вашу программу (например, при вызове из терминала, это значение нужно терминалу). приведу пример из жизни:
вы кинули камень, чтобы разбить стекло. как вы узнаете попали ли вы или нет? успешно или нет? это можно узнать по звуку: треск - стекло разбито (успешное завершение), тишина (ошибка, вы наверное камень не в ту сторону кинули). а то что делал камень во время полета (например порвал какое нибудь белье или еще что нибудь) - это уже сам процесс, а возвращаемое значение - это треск или тишина. в данном случае вы кинули камень (вы вызвали функцию) и только вам важно как выполнилась ваша функция.

Хорошо, буду понимать так int main () возвращает 0 если программа выполнена успешно, зачем тогда задается return 0 вручную
если программа может не выполнится успешно и возвратить 1, а мы задали return 0?
P.S. прошу понять мою тормознутость, ибо говорю что не программировал вообще ( хотя высшая математика идет на 4)

Olegator вы пишете что это не с++, а с. НО книжка называется с++ для чайников написано что этот пример на с++

ну это вам решать когда вы считаете функцию успешной, а когда нет. если только ноль возвращать, то получается что она всегда успешно выполняется.
P.S. выкиньте свою книгу прямо сейчас и возьмите это, а потом уже учите C++.
Спасибо сказали:
Аватара пользователя
andreas90
Сообщения: 158
ОС: Bluewhite64 12.2

Re: Не компилируется программа

Сообщение andreas90 »

Olegator писал(а):
05.03.2008 22:59
я щас с капслоком начну писать!!! функция main возвращает значение внешнему окружению, а не ваш ответ.

Код: Выделить всё

#include<iostream>
#include <cmath>
using namespace std;
int main(int argc, char *argv[])
{
  int a,b,c;
  float x1,x2;
  cout<<"enter a\n";
  cin>>a;
  cout<<"enter b\n";
  cin>>b;
  cout<<"enter c\n";
  cin>>c;
 float z = (b*b-4*a*c);
 if ( z < 0 )
  {
    cout<< "Error: Discrimemamt is negative\n";
    return 0;
  }
  else
  {
    cout<<"x1= "<< ((-b + sqrt(b*b - 4*a*c))/(2*a)<<endl;
    cout<<"x2="<< (( b + sqrt(b*b - 4*a*c))/(2*a);
    return 0;
   }
}



Вас понял, начинает проясняться.
1.Кому же тогда функция main() возвращает значения?
2. Сколько всего возвращаемых функцией main() значений, и что они означают (0 уже я понял успешное выполнение)
3. Зачем вручную задается return 0 и что это значит?
"Ubuntu" is an ancient African word, that means "I can't configure Slackware"
Спасибо сказали:
Olegator
Сообщения: 2493
ОС: SuseLinux 11.2 KDE 4.3

Re: Не компилируется программа

Сообщение Olegator »

вы сами должны знать когда ваша программа выполняется, а когда нет, и в соответствии с этим возвращать результат

1. программам, которые её запустили
2. когда вы написали программу, то вы пишите описание её интерфейса, и сами описываете какое значение, какую ошибку обозначает
3. а это вы и должны задавать, т.е. вы как разработчик считаете что при данных условиях программа выполняется корректно
Спасибо сказали:
Olegator
Сообщения: 2493
ОС: SuseLinux 11.2 KDE 4.3

Re: Не компилируется программа

Сообщение Olegator »

как бы книжка не называлась, но в ней программы написаны не на с++, а на с. в с++ не принято пользоваться printf и scanf.
Спасибо сказали:
Аватара пользователя
andreas90
Сообщения: 158
ОС: Bluewhite64 12.2

Re: Не компилируется программа

Сообщение andreas90 »

Olegator писал(а):
05.03.2008 23:13
вы сами должны знать когда ваша программа выполняется, а когда нет, и в соответствии с этим возвращать результат

1. программам, которые её запустили
2. когда вы написали программу, то вы пишите описание её интерфейса, и сами описываете какое значение, какую ошибку обозначает
3. а это вы и должны задавать, т.е. вы как разработчик считаете что при данных условиях программа выполняется корректно


1.По первому пункту вопросов нет
2. - но в этой программе выше я не указал какое значение какую ошибку обозначает (это необязательно?) что было бы если бы завершилоь неуспешно?
3. вообще не понял. ЧТо значит программа выполнена некорректно. Что в таком случае функция возвратит если я никаких обозначений ошибок не вводил (кроме return 0)
"Ubuntu" is an ancient African word, that means "I can't configure Slackware"
Спасибо сказали:
Аватара пользователя
wzrd
Сообщения: 323
ОС: Debian Lenny

Re: Не компилируется программа

Сообщение wzrd »

andreas90 писал(а):
05.03.2008 23:25
3. вообще не понял. ЧТо значит программа выполнена некорректно.

вообще то ничего не значит просто вы даете знать об этом приложению, которое запустило вашу программу, и оно уже будет решать что делать,
Спасибо сказали:
Аватара пользователя
andreas90
Сообщения: 158
ОС: Bluewhite64 12.2

Re: Не компилируется программа

Сообщение andreas90 »

wzrd писал(а):
05.03.2008 23:30
andreas90 писал(а):
05.03.2008 23:25
3. вообще не понял. ЧТо значит программа выполнена некорректно.

вообще то ничего не значит просто вы даете знать об этом приложению, которое запустило вашу программу, и оно уже будет решать что делать,

Я делаю для себя следующие выводы
Функция (любая?) возвращает не значения переменных, указанных в ее теле, а значение 0-успешно 1(?) неуспешно. Эти значения передаются другим программам.
Это пока все что я понял, но для меня это прорыв. А вот про return 0 неясно.
"Ubuntu" is an ancient African word, that means "I can't configure Slackware"
Спасибо сказали:
Olegator
Сообщения: 2493
ОС: SuseLinux 11.2 KDE 4.3

Re: Не компилируется программа

Сообщение Olegator »

вы немного не понимаете, в данном случае имеются ввиду не синтаксические ошибки в коде, а логические. пока на эту тему вам заморачиваться не надо возвращайте всегда 0. но когда вы станате великим программистом и напишите допустим драйвер какого - нибудть устройства. то допустим вы в свою программу передаёте порт к которому оно подключено, кстати значения в вызываемую программу передаются с помощью аргументов int argc, char *argv[], и вы можете потом их использовать(например ) oper-у из консоли можно запустить так: opera http://........ и она откроет эту страницу. так и вы запускаете свою прогу myproga com1, вы смотрите в своей программе есть ли там устройство, а его нет и тогда возвращаете допустим 45, и пишете в документации что 45 значи устройство не подключено. к примеру прошу не придираться, если не прав то можете подправить

понимаете, вы задаёте черезчур элементарные вопросы! прочитайте какую-нибудь книгу из тех что вам посоветовали. просто форум это не место для изучения основ языка
Спасибо сказали:
Аватара пользователя
wzrd
Сообщения: 323
ОС: Debian Lenny

Re: Не компилируется программа

Сообщение wzrd »

соглашусь, с Olegator"ом, в том что вам следует почитать что нибудь получше и порешать какие нибудь простенькие задачки (про API и прочее даже не думайте), со временем вы сами ответите на свои вопросы и даже лучше чем кто-либо другой. я сам поначалу не понимал что за 0? что за успешное выполнение и кому оно нужно?
Спасибо сказали:
Аватара пользователя
andreas90
Сообщения: 158
ОС: Bluewhite64 12.2

Re: Не компилируется программа

Сообщение andreas90 »

wzrd писал(а):
05.03.2008 23:54
соглашусь, с Olegator"ом, в том что вам следует почитать что нибудь получше и порешать какие нибудь простенькие задачки (про API и прочее даже не думайте), со временем вы сами ответите на свои вопросы и даже лучше чем кто-либо другой. я сам поначалу не понимал что за 0? что за успешное выполнение и кому оно нужно?


Ну я понял, что возвращается какой-то код другим программам. Код представляет собой сообщение другим программам. Каждому числу (коду) соответствует сообщение о чем-то связанным с выполнением программы.
А в каждой программе должна быть int main()?
Кто дает функциям имена?
"Ubuntu" is an ancient African word, that means "I can't configure Slackware"
Спасибо сказали:
Olegator
Сообщения: 2493
ОС: SuseLinux 11.2 KDE 4.3

Re: Не компилируется программа

Сообщение Olegator »

функциям имена даёте вы, но любая программа должна начинаться с функции main это аксиома! а в ней уже могут вызываться ваши функции

Код: Выделить всё

#include<iostream>
using namespace std;
int main(int argc, char *argv[])
{
  int a;
  float b;
 int myfunc1(<аргументы>)
  {
   .......
  .......
     return<значение типа int>;
   };

 float myfunc2(<аргументы>)
  {
   .......
  .......
     return<значение типа float>;
   };
 a=myfunc1(<аргументы>);
 b=myfunc2(<аргументы>);
 cout<<a<<endl<<b;
 return 0;
}
Спасибо сказали:
Аватара пользователя
andreas90
Сообщения: 158
ОС: Bluewhite64 12.2

Re: Не компилируется программа

Сообщение andreas90 »

Спасибо многое прояснилось, читаю Лафоре
"Ubuntu" is an ancient African word, that means "I can't configure Slackware"
Спасибо сказали:
Аватара пользователя
deninok
Сообщения: 585
Статус: Программист С++
ОС: Debian GNU/Linux

Re: Не компилируется программа

Сообщение deninok »

Автору темы: вам действительно необходимо почитать хорошую книгу по С++ (а не по С). Там вы обязательно найдете ответы на все вопросы, поднятые в этой теме, и даже гораздо больше. Судя по вашим вопросам, вы совсем еще новичок в программировании, поэтому вам нужно начать с чтения хорошей книги. А вот если какие-нибудь нетривиальные вопросы возникнут, то можно их и здесь задать.
Спасибо сказали:
Аватара пользователя
wzrd
Сообщения: 323
ОС: Debian Lenny

Re: Не компилируется программа

Сообщение wzrd »

Olegator писал(а):
06.03.2008 00:08
функциям имена даёте вы, но любая программа должна начинаться с функции main это аксиома! а в ней уже могут вызываться ваши функции

Код: Выделить всё

#include<iostream>
using namespace std;
int main(int argc, char *argv[])
{
  int a;
  float b;
 int myfunc1(<аргументы>)
  {
   .......
  .......
     return<значение типа int>;
   };

 float myfunc2(<аргументы>)
  {
   .......
  .......
     return<значение типа float>;
   };
 a=myfunc1(<аргументы>);
 b=myfunc2(<аргументы>);
 cout<<a<<endl<<b;
 return 0;
}

как вы можете создавать функции в main'е (или в другой функции), или это шутка?
Спасибо сказали:
Olegator
Сообщения: 2493
ОС: SuseLinux 11.2 KDE 4.3

Re: Не компилируется программа

Сообщение Olegator »

будем считать что я пошутил ;) , правильно так:

Код: Выделить всё

#include <iostream>
#include <cmath>
using namespace std;
int myfunc1(int c);
double myfunc2(double d);
int main()
{
    int a;
    double b;

    a=myfunc1(5);
    b=myfunc2(10.5);
    cout<<a<<endl<<b;
    return 0;
}
int myfunc1(int c)
{
    return c*c;
}
double myfunc2(double d)
{
    return sqrt(d);
}
Спасибо сказали:
promov
Сообщения: 384
Статус: Участник
ОС: Debian GNU/Linux

Re: Не компилируется программа

Сообщение promov »

Очень правильная тема!

andreas90 писал(а):
05.03.2008 21:47
Мне проще понять по аналогии с математикой. Там тоже есть функция n-переменных, которая возвращает значение. Например функция двух переменных z=x+y. Поправьте меня если такое мое сравнение (понимание) функции в программировании неверно
Расскажу о своём понимании функции через понимание различий между функциями в математике и вообще. Итак, для меня
1) Функция в математике есть зависимость величины x от величины y, выраженная в формуле;
2) В жизни функция это роль, значение чего-то там
3) В программировании функция это подпрограмма. Ты задумываешь какую-либо программу и предполагаешь: в моей прогамме необходимо сделать то-то, то-то и то-то. И оформляешь каждое задание отдельно. В виде так называемой функции. (Хочешь- по другому назови. Подпрогамма там, процедура, ещё как-то) Понял, что такое функция?
(Понимание тго, как лучше оформить то или иное задание: в виде функции или в виде простого цикла (допустим) придёт с опытом.)

andreas90 писал(а):
05.03.2008 23:07
1.Кому же тогда функция main() возвращает значения?
Повод улыбнуться и вспомнит себя полугодичной давности. Прошу любить и жаловать.
Решено: "Программа возвращает число". Как это понять?


deninok писал(а):
06.03.2008 10:32
Автору темы: вам действительно необходимо почитать хорошую книгу по С++ (а не по С). Там вы обязательно найдете ответы на все вопросы, поднятые в этой теме, и даже гораздо больше.
Не столько автору, сколько Вам. Вряд ли это так. То же самое понятие "возвращать значение" я нигде не нашёл, кроме как на этом форуме. А понятие буфера? Чётко, ёмко, понятно? Нигде. Зато там и сям примеры очищения буфера и прочее. Сам понятие формируешь, честное слово.
Поэтому автор, готовься к тому, что таких кнег просто нет в природе. Обкладывайся книжками (как я. У меня 3 солидных книжки, ни одна не лишняя, все задействованы и тем не менее, частенько здесь вопросы задаю (задавал)), читаешь, выписываешь в терадку появившиеся вопросы и пытаешься (!) пойти дальше в изучении. Потом к вопросам этим возвращаешься. Если и тогда не можешь на них ответить, тогда на форум.
...Я С изучаю, но думаю, на данный момент это не важно.

wzrd писал(а):
06.03.2008 17:03
как вы можете создавать функции в main'е (или в другой функции), или это шутка?
Никакой шутки. Всё на полном серьёзе- это на начальном этапе обучения так делается. Я тоже функции в main созавал... Автор, очень скоро ты поймёшь, что создавать функцию в функции (в данном случае в функции main) как-то не того. И засомневаешься в правильности своих действий. Тогда вот для тебя тема
Всякий раз перед использованием функции, её необходимо пересматривать
Зачем хорёк пошел в ларёк, зачем барсук полез на сук...
Мораль легко уразуметь: зачем на бал пришёл медведь?
Спасибо сказали:
promov
Сообщения: 384
Статус: Участник
ОС: Debian GNU/Linux

Re: Не компилируется программа

Сообщение promov »

wzrd писал(а):
05.03.2008 23:05
P.S. выкиньте свою книгу прямо сейчас и возьмите это, а потом уже учите C++.
Уважаемый wzrd! Я отношусь к Вам с глубоким уважением, но не надо человеку, изучающего C++ неделю, отсылать к K&R. Он через неделю будет задавать вопросы, которые возникли у него от прочтения этой книги, как делал это я. Автор, это книга сложна. Купи её, пусть она у тебя будет, обращайся к ней периодически, штутдируй, когда дотянешь до неё. Но не жди, что она на этом твоём этапе обучения будет для тебя супер-пупер. Ничего подобного. (Я, к слову, сейчас по ней шпарю. Но я именно сейчас по ней шпарю)

...Там даже в аннотации написано "Книга не рекомендуется для чтения новичкам; для своего изучения она требует знания основ программирования и вычислительной техники."
Зачем хорёк пошел в ларёк, зачем барсук полез на сук...
Мораль легко уразуметь: зачем на бал пришёл медведь?
Спасибо сказали:
Аватара пользователя
deninok
Сообщения: 585
Статус: Программист С++
ОС: Debian GNU/Linux

Re: Не компилируется программа

Сообщение deninok »

(promov) писал(а):То же самое понятие "возвращать значение" я нигде не нашёл, кроме как на этом форуме.

А я прочитал об этом в хороших книгах.

(promov) писал(а):Поэтому автор, готовься к тому, что таких кнег просто нет в природе.

Они есть, и я даже рекомендовал их выше. Могу еще раз ссылку дать:
http://cpp.itrm.ru/?page_id=20
Я думаю, одна книга всегда дополняет другую. В одной понятнее объяснено одно, в другой - другое. Поэтому одной (даже очень хорошей) книгой программист, желающий стать профессионалом, в любом случае не обойдется.
Спасибо сказали: