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

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

Kaldata.com - Форуми

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

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

Добре дошли!

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

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

 

Задача на C++

Featured Replies

дали? Това че е голямо не значи, че не може да се сметне.

 

 

Кой твърди, че не може. Казах, че е уловка. Очакваше да заменя числото 45 с 1000. И защо избърза да предложиш решение. 

 

Освен това, фактът че една задача, с едно конкретно условие е лесна, не означава, че задача с променено условие също е лесна.

 

Отношението и интереса винаги влизат в логиката. Всъщност те са истината с голямо И.

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

  • Отговори 63
  • Прегледи 9,4k
  • Създадено
  • Последен отговор

Кой твърди, че не може. Казах, че е уловка. Очакваше да заменя числото 45 с 1000. И защо избърза да предложиш решение. 

 

Освен това, фактът че една задача, с едно конкретно условие е лесна, не означава, че задача с променено условие също е лесна.

 

Отношението и интереса винаги влизат в логиката. Всъщност те са истината с голямо И.

Не съм го очаквал, а както съм написал малка промяна в условието - изискването да може да смята и до 1000 води след себе си и известно усложняване на програмата, но не я прави нерешима или пък да вкарва някаква уловка. А който сам я искал да си я реши да не е надничал в спойлера.

Кой твърди, че не може. Казах, че е уловка. 

Уловка има разбира се - казах, че махам проверката дали числото е от .. до , но умишлено пропуснах да кажа, че променям типа на променливите. От int на double.

Размерът и обхватът на int е различен за различните компилатори — за 16-битовите те са същите като за short, а за 32-битовите — като за long.

short - малко цяло число, 2 bytes, от –32 768 до 32 767
long - дълго цяло число, 4 bytes, от –2 147 483 648 до 2 147 483 647
double - дробно число, 8 bytes, до 1.7E ± 308
 
Резултата при N=1000 е 7,033036771142280 е+208
 
Даже кода намаля
#include <iostream>
using namespace std;
int main()
{
    double a=1,b=1,c,N,i;
    cout<<"N =";cin>>N;
    if(N<3) cout<<"F("<<N<<")="<<1<<endl;
    else
    {
        for(i=3;i<=N;i++)
        {
            c=a+b;
            a=b;
            b=c;
        }
        cout<<"F("<<N<<")="<<c<<endl;
    }
    cout<<endl;
    return 0;
}

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

Не съм го очаквал, а както съм написал малка промяна в условието - изискването да може да смята и до 1000 води след себе си и известно усложняване на програмата, но не я прави нерешима или пък да вкарва някаква уловка. А който сам я искал да си я реши да не е надничал в спойлера.

 

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

 

И второ. Защо даде решението мигновено след като разбра, че няма да се хвана, като явно изкриви думите ми, че съм твърдял че няма решение. Цитирай къде твърдя такова нещо.

 

Уловка има разбира се - казах, че махам проверката дали числото е от .. до , но умишлено пропуснах да кажа, че променям типа на променливите. От int на double.

Размерът и обхватът на int е различен за различните компилатори — за 16-битовите те са същите като за short, а за 32-битовите — като за long.

short - малко цяло число, 2 bytes, от –32 768 до 32 767
long - дълго цяло число, 4 bytes, от –2 147 483 648 до 2 147 483 647
double - дробно число, 8 bytes, до 1.7E ± 308
 
Резултата при N=1000 е 7,033036771142280 е+208
 
Даже кода намаля

 

Да, но и тук има едно но. Дабъл е реално число, а не цяло.

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

Ако пък сложа lonh double - смята до N=23601 - 9,28565e+4931

Колеги, нека не спамим повече темата на г-н Асен Якимов, защото вече се загуби нишката с първоначалния въпрос. Така или иначе не е ясно какво за автора не е наред с кода, който е приложил, поради което предлагам да изчакаме запитващия да даде повече информация. Изгладихме спора дали въпросния код е валиден и дали генерира работеща програма и не мисля, че цел на запитването е да правим теории и разработки до колко задачата може да се разтяга и разширява. В случая, темата се обърна доста на философско-програмистка тематика, която може да се обсъжда и на друго място.

 

Благодаря и поздрави !

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

Ако пък сложа lonh double - смята до N=23601 - 9,28565e+4931

с плаваща запетая ще ги сметнеш приблизително числата на Фибоначи, защото губиш значещи цифри като точност - мантисата long double е 63 бита или 19 значещи цифри.

 

В такъв случай защо не даде решението преди да разбереш, че няма да се хвана на уловката ?
 
И второ. Защо даде решението мигновено след като разбра, че няма да се хвана, като явно изкриви думите ми, че съм твърдял че няма решение. Цитирай къде твърдя такова нещо.
...
Не е "мигновенно" защото все пак ми трябваха 5 минути, за я променя програмата и да я тествам.
Поста ти е в 13:26 моя е в 12:31

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

с плаваща запетая ще ги сметнеш приблизително числата на Фибоначи, защото губиш значещи цифри като точност - мантисата long double е 63 бита или 19 значещи цифри.

Ние сега какво се опитваме да правим - да смятаме точно, да смятаме много или да се научим да програмираме?

 

Поправянето на едно работещо нещо е най-сигурния начин да стане не-работещо.

Ние сега какво се опитваме да правим - да смятаме точно, да смятаме много или да се научим да програмираме?

 

Поправянето на едно работещо нещо е най-сигурния начин да стане не-работещо.

В случая от скука си чешем езиците, ама автора на темата си е виновен - пусна мухата и изчезна, сега да не се сърди че сме му оспамили темата.
  • Автор

Извинявам се, че чак сега пиша, но нямах възможност по-рано. Някой попита за кой курс е - 4 курс, компютърна специалност. Може би изглежда лесно, но не се занимавам точно със C/C++, че да му разбирам толкова. Задачата я сглобихме с ровичкане по нет-а. Пробвал съм я дали работи в http://www.compileonline.com/compile_cpp_online.php, но или аз не правя нещо както трябва или има грешка. Щом казвате, че е вярна, ще съм благодарен да ме упътите как да я подкарам коректно. 

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

Аз я подкарах по най-баламския начин - копирах кода, старт и тръгна ...

С CodeBlock 13.12

Извинявам се, че чак сега пиша, но нямах възможност по-рано. Някой попита за кой курс е - 4 курс, компютърна специалност. Може би изглежда лесно, но не се занимавам точно със C/C++, че да му разбирам толкова. Задачата я сглобихме с ровичкане по нет-а. Пробвал съм я дали работи в http://www.compileonline.com/compile_cpp_online.php, но или аз не правя нещо както трябва или има грешка. Щом казвате, че е вярна, ще съм благодарен да ме упътите как да я подкарам коректно. 

От пост №9 можете да проверите, че линка води именно към този online компилатор.

P.S. В полето "STDIN Input" въведете N и натиснете compile & execute ...

Извинявам се, че чак сега пиша, но нямах възможност по-рано. Някой попита за кой курс е - 4 курс, компютърна специалност. Може би изглежда лесно, но не се занимавам точно със C/C++, че да му разбирам толкова. Задачата я сглобихме с ровичкане по нет-а. Пробвал съм я дали работи в http://www.compileonline.com/compile_cpp_online.php, но или аз не правя нещо както трябва или има грешка. Щом казвате, че е вярна, ще съм благодарен да ме упътите как да я подкарам коректно.

вакарай първо в STDIN Input числото за N и тогава го пускай да се компилира.

а най-добре вместо онлайн си изнсталирай на компютъра някое IDE на C/C++ премерно Dev-C++

  • Автор

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

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

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

Няма проблеми - споделеното време не е изгубено.

а в С++ константи не се декларират с  #define а само  с const

#define е за препоцесора хехе.

а в С++ константи не се декларират с  #define а само с const

#define е за препоцесора хехе.

Тъй, тъй - а пък когато декларираш променлива и в същото време ѝ зададеш стойност какво става ?

а в С++ константи не се декларират с  #define а само  с const

#define е за препоцесора хехе.

Това как е изпълнена константата, не променя факта, че е такава. Константа е стойност, която не трябва да се променя, толкова.

В огромна част от съществуващия софтуер, константите са с #define.

вие си го задавайте както искате въпроса е че по правило константа се декларира с const

a #define e за преппроцесора

поне така пише у дебелите книжки и в стандарта С++ все пак оказваме помощ на първокурсник нали?

 

вие си го задавайте както искате въпроса е че по правило константа се декларира с const

a #define e за преппроцесора

поне така пише у дебелите книжки и в стандарта С++ все пак оказваме помощ на първокурсник нали?

1. По-правилно? Че кой е говорил за правилно? Аз казах как може да се прави, не как е правилно.

2. Ако наистина искаш да помогнеш на човек, трябва да го подготвиш за всичко, не да го научиш на теоретично правилното и като попадне в реална ситуация да не знае, какво да прави. Както казах, в огромно количество реален код се пише със #define, и то при условие, че константите в c++ съществуват и правилата за ползването им са едни и същи откакто го има езика. Ако съответният човек иде в такава организация, ще трябва да пише по нейните правила за код, не по неговите. Поне, докато не стане шеф и не успее да издейства необходимото време да пренапишат проекта с const, вместо #define.

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

1. По-правилно? Че кой е говорил за правилно? Аз казах как може да се прави, не как е правилно.

2. Ако наистина искаш да помогнеш на човек, трябва да го подготвиш за всичко, не да го научиш на теоретично правилното и като попадне в реална ситуация да не знае, какво да прави. Както казах, в огромно количество реален код се пише със #define, и то при условие, че константите в c++ съществуват и правилата за ползването им са едни и същи откакто го има езика. Ако съответният човек иде в такава организация, ще трябва да пише по нейните правила за код, не по неговите. Поне, докато не стане шеф и не успее да издейства необходимото време да пренапишат проекта с const, вместо #define.

 

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

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

:) едва ли. Нали в задачата нямаше константи. А и част от доцентите, ако ги питаш, няма да знаят разликата...

:) едва ли. Нали в задачата нямаше константи. А и част от доцентите, ако ги питаш, няма да знаят разликата...

е значи моите са били някви  супер мутирали доценти щот с тоя номер ме пробваха ама не им мина номера :) :) :)

е значи моите са били някви  супер мутирали доценти щот с тоя номер ме пробваха ама не им мина номера :) :) :)

Ти затова ли скачаш два боя по въпроса:D

Ти затова ли скачаш два боя по въпроса :D

 

да бе ама не бяха два боя ами цели десет :) :) :)

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

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

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

Дарение

  • Подкрепи съществуването на форума - направи дарение
    25%
    Дарени 252.69 EUR от нужните 1,000.00 EUR

Бюлетин

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

Профил

Навигация

Търсене

Търсене

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

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