Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Малко помощ за С/С++ програмиране

Featured Replies

Отново В горната програма, ако се промени int пред main във void компилатора дава грешка. Въпроса ми е защо дава тази грешка? Все още на мога да разбера разликата между двата индентификатора. Кога се пише void и кога int пред main и защо? Въпреки, че по-горе е обяснено. Явно съм нещо тъпичък. :)

Не мога да разбера каква функция изпълняват всяка една от думите using namespace std и system ("pause"). В комбинация тези думи запазват екрана на изпълнение на програмата и изчакват натискане на произволен клавиш. Това ми ясно. Но ми се губят подробностите.

Ако се премахне return 0, програмата работи без проблем, но ако се премахне само нулата, дава грешка. Въпроса ми е защо действа по този начин?

Единственият въпрос на който съм успяла да си отговоря е за system ("pause") така че: това запазва резултата на екрана докато не натиснеш произволен клавиш, зависи от версията на с++ на която работиш, на dev и++ е задължително да го пишеш щото иначе резултата изчезва преди да си го видял. за останалите въпроси и аз не знам ЗАЩО? обаче съм пуснала една тема и за void и int ми казаха че пак така зависело от средата ама аз винаги пиша int main() и да ти кажа не ми дава грешки

Цитат от по-горе на d_georgieva:" ...обаче съм пуснала една тема и за void и int ми казаха че пак така зависело от средата..""

Къде си пуснал тази тема за да влезна да попрочета нещо?

Защото main е функция. А функциите или връщат резултат или не връщат. Когато връщат резултат, той от даден тип, примерно int.

Когато напишеш int main () се предполага, че функцията main трябва да върне резултат от тип int. Връщането на резултат се извършва с return. За това винаги, когато искаш да върнеш някакъв резултат след изпълнението на функцията, в декларацията на да дената функция трябва да опоменеш какъв тип е този резултат (int, double, char...) и накрая на функцията да върнеш резултата с return.

А когато не искаш да връщаш резултат, за тип на функцията слагаш void и не връщаш нищо с return.

Като прочетеш глава функции ще ти светне. Ето ти два примера:

int sum_num (int a, int b)

{

	int res;

	res = a + b;


	return res;

}
При изпълнение на горната функция се връща сумата на входните променливи, която е от тип int. Но можеш да имаш случай, в който искаш функцията ти да не връща нищо и тогава използваш void. Примерно:
void sum_num (int a, int b)

{

	int res;

	res = a + b;


	cout << res << endl;

}

В горната функция извеждаш резултата на екрана и не ти трябва да връщаш резултат извън функцията.

За сега запомни, че в main винаги ползваш int с return или void без return. Като прочетеш за функциите ще ти светне.

Редактирано от Trax (преглед на промените)

Защото main е функция. А функциите или връщат резултат или не връщат. Когато връщат резултат, той от даден тип, примерно int.

Когато напишеш int main () се предполага, че функцията main трябва да върне резултат от тип int. Връщането на резултат се извършва с return. За това винаги, когато искаш да върнеш някакъв резултат след изпълнението на функцията, в декларацията на да дената функция трябва да опоменеш какъв тип е този резултат (int, double, char...) и накрая на функцията да върнеш резултата с return.

А когато не искаш да връщаш резултат, за тип на функцията слагаш void и не връщаш нищо с return.

Като прочетеш глава функции ще ти светне. Ето ти два примера:

int sum_num (int a, int b)

{

	int res;

	res = a + b;


	return res;

}
При изпълнение на горната функция се връща сумата на входните променливи, която е от тип int. Но можеш да имаш случай, в който искаш функцията ти да не връща нищо и тогава използваш void. Примерно:
void sum_num (int a, int b)

{

	int res;

	res = a + b;


	cout << res << endl;

}

В горната функция извеждаш резултата на екрана и не ти трябва да връщаш резултат извън функцията.

За сега запомни, че в main винаги ползваш int с return или void без return. Като прочетеш за функциите ще ти светне.

Благодаря за добрия и изчерпателен отоговор. ;) Вече започнаха да ми се изясняват нещата около фунциите и когато се занимавам повечко тях се надявам да ги разбера изцяло. cool.gif

Но все пак не мога да си обясня следното. В следващата програма main () не връща никакаъв резултат. Само отпечатва на екрана "Privet", няма return, и въпреки всичко отново дава греша и иска int пред main, ако е написано void. С int програмата работи без грешка. Защо става така? Нещо не се връзва с отговора от Trax: "...За сега запомни, че в main винаги ползваш int с return или void без return..."

#include <iostream.h>

using namespace std;

int main()

{

cout << "Privet \n";

system ("pause");

}

Благодаря за добрия и изчерпателен отоговор. ;) Вече започнаха да ми се изясняват нещата около фунциите и когато се занимавам повечко тях се надявам да ги разбера изцяло. cool.gif

Но все пак не мога да си обясня следното. В следващата програма main () не връща никакаъв резултат. Само отпечатва на екрана "Privet", няма return, и въпреки всичко отново дава греша и иска int пред main, ако е написано void. С int програмата работи без грешка. Защо става така? Нещо не се връзва с отговора от Trax: "...За сега запомни, че в main винаги ползваш int с return или void без return..."

#include <iostream.h>

using namespace std;

int main()

{

cout << "Privet \n";

system ("pause");

}

Ми написано беше по-горе int, void, char, str и т.н. служат за обозначаване от какъв тип е дадена променлива.

А компилаторът може да работи с Много големи числа,числа с плаваща запетая,които се формират, като се групират няколко байта.

char - 1 байт,знак или цяло число с дълж. 8 бита. от 0 до 255.

short-2 баита,цяло число с дълж. 16 бита. от 0 до 65535

long - 4,цяло число с дълж. 32 бита. от 0 до много.

int- Цяло число с дълж. която зависи от типа Word на систем. която може да е 16,32,x86,64,бита.

float 4 ,число с плаваща

double 8 ,число с плаваща запетая с двойна точност.

longdouble 10 ,число с плаваща запетая с двойна точност.

bool - Булева стойност , добавен от ANSI стандарт тип данни.

Освен тези типове има още два типа спецификаций за параметър:

указатели и void.

Void - функций без типове,ако не искаме да връщаме никаква стойност.

Това е функция без параметри или аргументи,а не нещо друго.

Ако не съм бил много ясен,просто пиши кода в упражненията и ще схванеш,на каде бия.....

применро ако имаш променливи приемащи цифри и числа за свои стойности използваш int

Ако искаш променливата да приема друг тип стойности - символи, думи, и т.н. използваш друга декларация. Макар, че и това не е съвсем вярно, защото да речем е вярно и следното:

int number;

number = 'a';

cout << number << endl;

Просто всичко е обяснено в горните постове и трябва да погледнеш малко по-задълбочено на отговорите. За съжаление немога да го обясня ;) Лиспва ми начина на изразяване и предполагам, че ако се опитам ще те объркам още повече. Погледни предните постове надявам се да ти стане по-ясно.

Последното което разбрах е че всичко зависи от версията на С++ Ако е по-стара караш само със int main() но в по-новите използваш void и то само ако не връща резултат. Така че и само int main() да пишеш не е проблем. Не знам колко е вярно но това ми обясниха на мен

Май зависи повече от това какво се опитваш да компилираш,

Не се отказвайте ами продължете напред ,тогава ще ви стане ясно.??

Ако стигнете до някакъв сорс от сорта на Джон написа този ред тук..

не го пипай защото иначе програмата няма да тръгне.И този ред не се пипа ,трябва да се приема така..?

А обяснението си идва само след време.Трябва цялостен поглед върху нещата.

Така ми обясниха на мен като започнах!

  • 1 месец по-късно...

Хайде още един начинаещ в С++.

Ако може да ми помогнете с една елементарна програмка.

#include<iostream>

using namespace std;

int main();

{

const double pi=3.14;

double r,l,s;

//cout <<"r=";

cin>>r;

l=2*pi*r;

s=pi*r*r;

//cout <<"l="<<l<<" s="<<s<< end l;

return <val>;

}

Пиша ги на visual c++ 2008 express edition.Като дам Build и ми дава грешка '{' : missing function header (old-style formal list?).Ако може да ми помогнете да я направя да стане ще съм много благодарен.Имам и още въпрос.Как да накарам visual c++ да ми искара резултат.Като няма грешки не знам как да видя резултата.

Редактирано от horus92 (преглед на промените)

Хайде още един начинаещ в С++.

Ако може да ми помогнете с една елементарна програмка.

#include<iostream>

using namespace std;

int main();

{

const double pi=3.14;

double r,l,s;

//cout <<"r=";

cin>>r;

l=2*pi*r;

s=pi*r*r;

//cout <<"l="<<l<<" s="<<s<< end l;

return <val>;

}

Пиша ги на visual c++ 2008 express edition.Като дам Build и ми дава грешка '{' : missing function header (old-style formal list?).Ако може да ми помогнете да я направя да стане ще съм много благодарен.Имам и още въпрос.Как да накарам visual c++ да ми искара резултат.Като няма грешки не знам как да видя резултата.

Да не си пропуснал да напишеш #include "stdafx.h" преди #include<iostream>?

Да не си пропуснал да напишеш #include "stdafx.h" преди #include<iostream>?

Програмата я преписах от един учебник.Беше малко по различна и даваше друга дрешка,преработих я и сега дава това.Иначе не съм пробвал.

PS.преди малко я пробвах и с това ама няма разлика.

Редактирано от horus92 (преглед на промените)

А защо си сложил ';' след int main() ?! :help:

P.S. като четеш грешката гледай и на кой ред е, много по-лесно ще ти е да си я оправиш.

  • 7 месеца по-късно...
Единият вариянт е като я стартираш от команд промпт:

(Start -> Run -> cmd)

отиваш в папката където ти е готовото .ехе

и го стартираш ime.exe

Вторият вариянт е като добавиш след cout << "Privet" << "\n"; следния ред: system ("pause");

Това ще добави опция при стартирането на програмата и след изпълнението и да се изчака потребителя да натисне който и да е клавиш за да се затвори команд промпта при, който е стартиран с програмата, а не веднага да се затвори след изпълнението й.

Ще изглежда нещо от сорта:

#include <iostream>


using namespace std;


int main() {


	 cout << "Privet" << endl;

	 system("pause");

	 return 0;

	 }

Захванал съм се да уча C.Имам същия проблем с comand prompt-a само че при C сорс. Компилирам си и като натисна RUN конзолата се отваря, програмата ми иска първата променлива, аз я въвеждам, натискам ENTER и прозореца се затваря без да ме пита за останалите променливи и без да изкара някакъв резултат преди това.Когато си стартирам .EXE -то от конзолата няма проблем.Вичко си върви до края на програмата, но ми е интересно какви команди трябва да се въведат в сорса за да не се затвори comand prompt-a.Т.е. втория гореописан варянт, но в случай че програмата е написана на C. Използвам Dev C++, като съм го превключил да компилира C-сорсове.

Редактирано от billy_the_kid (преглед на промените)

Регистрирайте се или влезете в профила си за да коментирате

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.