Премини към съдържанието
От 1-ви септември 2021 г., вход във форумите ще е възможен само с имейл адрес вместо потребителско име. Ако не помните имейла с който сте се регистрирали, вижте го в настройките на профила си. ×
  • Добре дошли!

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

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

     

Задача на C++


Асен Якимов

Препоръчан отговор


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

Това е условието:

Първите две числа от ред на Фибоначи са 1 и 1. Всяко следващо число се образува като сума от предходните две числа. От клавиатурата се въвежда естествено число N. Да се състави цикличен алгоритъм за извеждане стойност на N-тото число от ред на Фибоначи.

А това е каквото измислихме с колегата, с който сме екип за курсовия проект, но нещо не се получава както трябва:

 

#include <iostream>
 
using namespace std;
 
int main()
{
    int a=1,b=1,c,N,i;
    do
    {
        cout<<"N(1..45)=";cin>>N;
    }
    while(N<1||N>45);
    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;
}
 
Благодаря предварително на отзовалите се.
Линк към коментара
Сподели в други сайтове

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

А това е каквото измислихме с колегата, с който сме екип за курсовия проект, но нещо не се получава както трябва:

Ами и да бяхте казали, какво точно "не се получава както трябва"...

Според мен, програмата ще си работи.

Линк към коментара
Сподели в други сайтове

Ето така е правилно. Както сте го написали не е логично и няма как да тръгне.
 
#include <iostream>
 
using namespace std;
 
int main()
{
    int a,b,c,N,i;
    do
    {
        cout<<"N(1..45)=";cin>>N;
        if (N>=1&&N<=45)
        {
           a=1;
           b=1;
           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;
    }
    while (N>=1&&N<=45);
    return 0;
}
Линк към коментара
Сподели в други сайтове

Както сте го написали не е логично и няма как да тръгне.

Мхм.

:lol6:

 

Линк към коментара
Сподели в други сайтове

 

Ето така е правилно. Както сте го написали не е логично и няма как да тръгне.
...

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

 

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

 

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


Линк към коментара
Сподели в други сайтове

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

 

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

 

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

 

Вие пуснахте ли на компютъра програмите, за да разберете какво прави първата и какво прави втората ?

 

1. Колегата се е опитвал да декларира числа, които уж след това ще интерпретира като константи, но ги интерпретира като променливи, което е грешно

 

2. Освен това е оставил вън от цикъла "ду уайл" основните действия, които се изискват по условие и те въобще не се изпълняват.

 

3. В предложеният от мен код, програмата работи съгласно изискванията на условието, докато потребителят въвежда числа в затвореният интервал от 1 до 45, а в противен случай се излиза от програмата.

 

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

Мхм.

:lol6:

 

 

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

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

 

1. Не може да променяте стойности, които ще се използват като константи. Ако искате да ги променяте, трябва след това отново да ги инициализирате.

 

2. Не може това, което следва да се изпълни, да се поставя извън тялото на работният цикъл и да не се изпълнява въобще.

Линк към коментара
Сподели в други сайтове

Вие пуснахте ли на компютъра програмите, за да разберете какво прави първата и какво прави втората ?

Да. Не, че е необходимо...

1. Колегата се е опитвал да декларира числа, които уж след това ще интерпретира като константи, но ги интерпретира като променливи, което е грешно

Глупости. В C++ си има пределно ясен синтаксис за деклариране на константи и също такъв за инициализиране на променливи по време на декларация. Останалото са твои измишльотини.

2. Освен това е оставил вън от цикъла "ду уайл" основните действия, които се изискват по условие и те въобще не се изпълняват.

Пак глупости. Цикълът do-while в горния код се ползва за валидация на входа и я върши перфектно. По условие трябва да се намери число на Фибоначи с цикъл, а не рекурсивно, което и става - във for-a.

3. В предложеният от мен код, програмата работи съгласно изискванията на условието, докато потребителят въвежда числа в затвореният интервал от 1 до 45, а в противен случай се излиза от програмата.

Никъде не пише, че потребителят трябва да въвежда числа многократно. "Цикличен алгоритъм" се отнася за метода за намиране на съответният елемент.

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

И как му го съобщаваш това?

 

Реджеп, сбъркал си раздела...

Линк към коментара
Сподели в други сайтове

Ами и да бяхте казали, какво точно "не се получава както трябва"...

Според мен, програмата ще си работи.

Програмата твърдо няма да си работи колега.

Вие не сте я пуснали на компютъра

Линк към коментара
Сподели в други сайтове

@flare - за 1 мин ме изпревари :D.

 

Абсолютно съгласен с мнението на @flare, като ще допълня, че константите като замисъл не се въвеждат от потребителя.

Освен това, "цикличен" в случая е споменат, защото алгоритъма за намиране на N-тото число на Фибоначи има и рекурсивна реализация. И понеже тя е адски тромава и тежка, дори за неголеми N, условието допълнително подсказва да се подходи с итеративен алгоритъм. А не, че програмата ще цикли неопределено време, докато изчислява една камара числа на Фибоначи ...

 

P.S. Умишлено подчертавам и удебелявам реда, относно цикличността, защото ми се струва, че пак спора се върти около интерпретациите на думите ...

 

Поздрави !

 

 

Програмата твърдо няма да си работи колега.

Сериозно ?! Този приятел е на друго мнение ...

 

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

Линк към коментара
Сподели в други сайтове

@flare - за 1 мин ме изпревари :D.

 

Абсолютно съгласен с мнението на @flare, като ще допълня, че константите като замисъл не се въвеждат от потребителя.

Освен това, "цикличен" в случая е споменат, защото алгоритъма за намиране на N-тото число на Фибоначи има и рекурсивна реализация. И понеже тя е адски тромава и тежка, дори за неголеми N, условието допълнително подсказва да се подходи с итеративен алгоритъм. А не, че програмата ще цикли неопределено време, докато изчислява една камара числа на Фибоначи ...

 

P.S. Умишлено подчертавам и удебелявам реда, относо цикличността, защото ми се струва, че пак спора се върти около интерпретациите на думите ...

 

Поздрави !

 

Ама колега, програмата на питащият изобщо не работи.

 

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

 

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

Линк към коментара
Сподели в други сайтове

Автора на темата така и не каза какво точно "не се получава както трябва"

 

като я гледам програмата си работи само възниква въпроса:"Защо до 45?" В условието няма такова изискване, с 32 битови цели числа се покриват числата до N=46, а и нищо не пречи да се използват 64 битови числа без знак където ще се покрият по-големи стойностти на N.

Линк към коментара
Сподели в други сайтове

Автора на темата така и не каза какво точно "не се получава както трябва"

 

като я гледам програмата си работи само възниква въпроса:"Защо до 45?" В условието няма такова изискване, с 32 битови цели числа се покриват числата до N=46, а и нищо не пречи да се използват 64 битови числа без знак където ще се покрият по-големи стойностти на N.

 

Програмата не работи ако се въведе число от 1 до 45 тя иска пак да се въведе число, тъй като логиката е сбъркана. Логиката за принадлежност и непринадлежност на интервала от 1 до 45 е сбъркана. 

 

Пуснете я на компютъра и ще видите

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

Линк към коментара
Сподели в други сайтове

Програмата не работи ако се въведе число от 1 до 45 тя иска пак да се въведе число, тъй като логиката е сбъркана. Логиката за принадлежност и непринадлежност на интервала от 1 до 45 е сбъркана. 

 

Пуснете я на компютъра и ще видите

Пробвахте ли да изпълните кода на запитващия на компилатора, който цитирах в последния си пост ? 

Освен това, Вие не казвате на каква среда сте постигнали този резултат и по какъв начин. При положение, че 3-ма човека получаваме едни и същи резултати, не мисля, че проблема ще е в "телевизорите" на всички ни.

Освен това, кода на запитващия е изпълняван на 2 OS платоформи и с различни компилатори. И резултата си е както се очаква - запитването за число е до момента, в който се въведе валидно N. 

 

EDIT: Условието за do/while цикъла си е правилно в кода, изначално приложен от запитващия, защото има смисъл на валидация - докато потребителя не въведе число между 1 и 45, цикъла ще иска пак да се въведе N. В случай, че се въведе число за N от 1 до 45, запитването за въвеждане приключва и работата продължава с изчислението на въпросното N-то число.

Линк към коментара
Сподели в други сайтове

Ама колега, програмата на питащият изобщо не работи.

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

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

Пак казвам сбъркал си раздела.
  • do-while ще повтаря, само докато въведеното число e по-малко от 1 или по-голямо от 45.
  • Това не са константи, а променливи В C++ константи се декларират с const или с #define.

Автора на темата така и не каза какво точно "не се получава както трябва"

като я гледам програмата си работи само възниква въпроса:"Защо до 45?" В условието няма такова изискване, с 32 битови цели числа се покриват числата до N=46, а и нищо не пречи да се използват 64 битови числа без знак където ще се покрият по-големи стойностти на N.

Не са се сетили вероятно :)

Програмата не работи ако се въведе число от 1 до 45 тя иска пак да се въведе число, тъй като логиката е сбъркана. Логиката за принадлежност и непринадлежност на интервала от 1 до 45 е сбъркана. 

 

Пуснете я на компютъра и ще видите

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

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

А ти пусна ли я, че спориш? И как да не се изисква цикъл, за какво е тоя for там...

Линк към коментара
Сподели в други сайтове

#include <iostream>
 
using namespace std;
 
int main()
{
    int a=1,b=1,c,N,i;
    do
    {
        cout<<"N(1..45)=";cin>>N;
    }
    while(N<1&&N>45);
    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;
}               

Ето това искате вие. Забелязвате ли разликата в логиката. Не е ор а е анд правилно и действително тръгва, но без цикъл. 

 

Ще го редактирам да е червено

 

Редактирах го. Там му е грешката на питащият.

 

Глупост написах, да не се брои

Линк към коментара
Сподели в други сайтове

while(N<1&&N>45);

Уж беше последно... Кажи ми, о Реджеп, кое е това число което е едновременно по-малко от 1 и по-голямо от 45?

Тъй като въпросът е риторичен и тука стана близо 1 и половина след полунощ аз мисля да спя.

Линк към коментара
Сподели в други сайтове

Пак казвам сбъркал си раздела.

  • do-while ще повтаря, само докато въведеното число e по-малко от 1 или по-голямо от 45.
  • Това не са константи, а променливи В C++ константи се декларират с const или с #define.
Не са се сетили вероятно :)

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

А ти пусна ли я, че спориш? И как да не се изисква цикъл, за какво е тоя for там...

 

 

Ами пуснах я колега. Не работи. Дадох вече и къде му е грешката, по вашата интерпретация. Повдигнал съм я в червено.

 

Вие сте този, който не е проверил как работи програмата на компютъра.

Линк към коментара
Сподели в други сайтове

...

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

А ти пусна ли я, че спориш? И как да не се изисква цикъл, за какво е тоя for там...

 

/OFF Един мой познат казваше така "Всеки може да спори ако знае че е прав ама аз най-обичам да споря когато знам че не съм прав, особенно ако успея и да убедя опонента си че той греши макар да знам че това не е така." 

 

Както вече се досетихте въпросния ми познат е с професия адвокат.

Линк към коментара
Сподели в други сайтове

Уж беше последно... Кажи ми, о Реджеп, кое е това число което е едновременно по-малко от 1 и по-голямо от 45?

Тъй като въпросът е риторичен и тука стана близо 1 и половина след полунощ аз мисля да спя.

 

Прав си. Тук греша. Програмата прави това, което искате вие. Извинявам се.

 

Остава обаче въпросът какво иска питащият

Аз си помислих, че иска цикъл, и това, което предложих първият път си е коректно. Пак го тествах.

 

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

/OFF Един мой познат казваше така "Всеки може да спори ако знае че е прав ама аз най-обичам да споря когато знам че не съм прав, особенно ако успея и да убедя опонента си че той греши макар да знам че това не е така." 

 

Както вече се досетихте въпросния ми познат е с професия адвокат.

 

Проблема е отношението на Флеър. Виждам, че сгреших на края, но защото се ядосах. Разбрах и какво имате предвид.

 

Но предложението ми не е лошо. Работи си. И е по удобно. С нищо не усложнявам нещата. Има само едно повторение на проверката, което не се сетих как да избегна без да използвам оператора "goto"

Линк към коментара
Сподели в други сайтове

Ами пуснах я колега. Не работи. Дадох вече и къде му е грешката, по вашата интерпретация. Повдигнал съм я в червено.

 

Вие сте този, който не е проверил как работи програмата на компютъра.

Изпуснал съм темата, но започвайки да чета - първото нещо беше да копирам кода от първия пост в CodeBlocks. Еми - тръгна си от раз.

 

И аз се чудя - какво точно пита питащия?

Линк към коментара
Сподели в други сайтове

Изпуснал съм темата, но започвайки да чета - първото нещо беше да копирам кода от първия пост в CodeBlocks. Еми - тръгна си от раз.

 

И аз се чудя - какво точно пита питащия?

 

Работи. Ако се иска това. Не съм очаквал, че може да е толкова лесно. Това за кой курс е ?

 

 

Линк към коментара
Сподели в други сайтове

Сега пък било лесно, ми айде да го усложним тогава малко. Същото условие но N да е от 1 до 1000.

Ми кво - махам проверката за диапазона и си смята.

Линк към коментара
Сподели в други сайтове

Ми кво - махам проверката за диапазона и си смята.

 

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

Линк към коментара
Сподели в други сайтове

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

#include <iostream>
#include <iomanip>
 
#define MIL 1000000000000000000ull  // 10^18
#define MX 15
 
using namespace std;
 
unsigned long long a[MX], b[MX]={0}, c[MX];
int ix;
 
void fibb() {
     unsigned long long op=0;
     for (int i=0; i<ix; i++) {
         c[i]=a[i]+b[i]+op;
         if (c[i]>MIL) { op=1; c[i]-=MIL;}
         else op=0;
     }
     if (op) {
         c[ix]=1;
         ix++;
     }
     for (int i=0; i<ix; i++) {
         a[i]=b[i];
         b[i]=c[i];
     }
}
 
void printf() {
     cout<<c[ix-1];
     if (ix>1) {
         cout<<setfill('0');
         for (int i=ix-2; i>=0; i--) 
             cout<<setw(18)<<c[i];
         cout<<setfill(' ');
     }
}
 
int main()
{
    int N;
    
    a[0]=1;
    b[0]=1;
    ix=1;
    
    do {
        cout<<"N(1..1000)=";
        cin>>N;
    }
    while(N<1||N>1000);
    
    if(N<3) cout<<"F("<<N<<") = 1";
    else {
        for(int i=3;i<=N;i++) fibb();
        cout<<endl<<"F("<<N<<")=";
        printf();
    }
    cout<<endl;
    system("pause");
    return 0;
}

Линк към коментара
Сподели в други сайтове

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

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

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

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

  • Подобни теми

    • от силвия димитрова стефанова
      Здравейте! Може ли да ми помогнете с курсовата ми работа.  Това е условието. Не мога да направя точка 11‐III. Може ли да ми помогнете
      11‐I.Да се състави абстрактен клас Редактор на книга BookEditor Чисто виртуални функции:
      I.1.LIST<BOOKPAGE> GENERATEBOOK(STRING TITLE, INT NUMBERPAGES )‐ СЪЗДАВА СТРАНИЦИ ОТ КНИГА СЪС ЗАГЛАВИЕ TITLE И ПРАЗНИ СТРАНИЦИБРОЙ NUMBERPAGES И ГИ ДОБАВЯI.2.VOID SWAPPAGES(INT FIRSTPN, INT SECONDPN)‐ РАЗМЕНЯ СТРАНИЦИТЕ С НОМЕРА – ПАРАМЕТРИ FIRSTPN, SECONDPN.ПРОДУЦИРА ИЗКЛЮЧЕНИЕ, АКО НЕ МОЖЕ ДА СЕ ИЗПЪЛНИ
      11‐II.Да се състави клас Страница BookPage Скрити член променливи:
      Номер на страница‐ число int; Съдържание – низ string; Публични функции:
      II.1.КОНСТРУКТОРИ – ЕКСПЛИЦИТЕН, ПОДРАЗБИРАЩ СЕ;
      II.2.ЧЕТЕНЕ/ЗАПИС
      II.3.ЗА РАЗМЯНА НА СЪДЪРЖАНИЕ НА СТРАНИЦА С ПОДАДЕНАТА КАТО ПАРАМЕТЪР РЕФЕРЕНЦИЯ КЪМ СТРАНИЦА;
      II.4.OPERATOR == СРАВНЯВА ПО ВСИЧКИ ДАННИ
      II.5.OPERATOR< ЗА СРАВНЕНИЕ ЗА ПО‐МАЛКО НА ПОДАДЕНИЯ ПАРАМЕТЪР ОБЕКТ С ТЕКУЩИЯ ПО НОМЕР НА СТРАНИЦА
      II.6.ПРЕОБРАЗУВА / ВРЪЩА НИЗ ОТ ЧЛЕНОВЕТЕ НА КЛАСА
      II.7.OPERATOR<<(ИЗВЕЖДА В УКАЗАН ИЗХОДЕН ПОТОК)
      II.8.OPERATOR>>(ЧЕТЕ ОТ УКАЗАН ВХОДЕН ПОТОК)
      11‐III.Да се състави клас Книга Book за съхраняване на страници (подредени по номер на страница), наследник на BookEditor – клас I11‐I Скрити член променливи: Списък от страници – съдържа обекти от клас II, m_listPagesПублични функции: III.1.КОНСТРУКТОРИ – ЕКСПЛИЦИТЕН ПО БРОЙ СТРАНИЦИ И ЗАГЛАВНА СТРАНИЦА, СЪЗДАВА КНИГА СЪС ЗАГЛАВИЕ И ПРАЗНИ СТРАНИЦИ –УКАЗАНИЯ БРОЙ; ПОДРАЗБИРАЩ СЕ – СЪЗДАВА КНИГА САМО СЪС ЗАГЛАВИЕ
      III.2.ДОБАВЯНЕ НА СТРАНИЦА – ПАРАМЕТЪР СТРАНИЦА
      III.3.ПРОМЕНЯНЕ НА СТРАНИЦА – ПАРАМЕТЪР СТРАНИЦА
      III.4.ПРЕМАХВАНЕ НА СТРАНИЦА С ПОДАДЕН ПАРАМЕТЪР НОМЕР НА СТРАНИЦА
      III.5.РАЗМЕНЯНЕ НА СЪДЪРЖАНИЕ НА ПОДАДЕНИ ДВЕ РЕФЕРЕНЦИИ КЪМ СТРАНИЦИ.ПРОДУЦИРА ИЗКЛЮЧЕНИЕ, АКО НЕ МОЖЕ ДА СЕ ИЗПЪЛНИ
      III.6.ПРЕОБРАЗУВА / ВРЪЩА НИЗ ОТ ЧЛЕНОВЕТЕ НА КЛАСА
      III.7.ИМПЛЕМЕНТИРАНЕ НА ВИРТУАЛНИТЕ ФУНКЦИИ
      11‐IV.Главна функция (main) IV.1.СЪЗДАВА ОБЕКТ BOOK ОТ
      IIIIV.2.ИЗВЕЖДАНЕ НА КНИГАТА НА КОНЗОЛЕН ИЗХОД
      IV.3.ДОБАВЯНЕ НА СТРАНИЦА КЪМ
      IV.1, ИЗВЕЖДАНЕ НА РЕЗУЛТАТА НА КОНЗОЛЕН ИЗХОД
      IV.4.ПРЕМАХВАНЕ НА СТРАНИЦА ОТ
      IV.1, ИЗВЕЖДАНЕ НА РЕЗУЛТАТА НА КОНЗОЛЕН ИЗХОД
      IV.5.РАЗМЕНЯНЕ НА ДВЕ ОТ СТРАНИЦИТЕ ОТ
      IV.1, ИЗВЕЖДАНЕ НА РЕЗУЛТАТА НА КОНЗОЛЕН ИЗХОД
      IV.6.ОБРАБОТВАНЕ НА ИЗКЛЮЧЕНИЕ
    • от силвия димитрова стефанова
      Здравейте! Може ли да ми помогнете с точка II.6. Това е условието:
      Да се състави клас Страница BookPage Скрити член променливи: Номер на страница‐ число int; Съдържание – низ string; Публични функции: II.1.КОНСТРУКТОРИ – ЕКСПЛИЦИТЕН, ПОДРАЗБИРАЩ СЕ; II.2.ЧЕТЕНЕ/ЗАПИС II.3.ЗА РАЗМЯНА НА СЪДЪРЖАНИЕ НА СТРАНИЦА С ПОДАДЕНАТА КАТО ПАРАМЕТЪР РЕФЕРЕНЦИЯ КЪМ СТРАНИЦА; II.4.OPERATOR == СРАВНЯВА ПО ВСИЧКИ ДАННИ II.5.OPERATOR< ЗА СРАВНЕНИЕ ЗА ПО‐МАЛКО НА ПОДАДЕНИЯ ПАРАМЕТЪР ОБЕКТ С ТЕКУЩИЯ ПО НОМЕР НА СТРАНИЦА II.6.ПРЕОБРАЗУВА / ВРЪЩА НИЗ ОТ ЧЛЕНОВЕТЕ НА КЛАСА II.7.OPERATOR<<(ИЗВЕЖДА В УКАЗАН ИЗХОДЕН ПОТОК) II.8.OPERATOR>>(ЧЕТЕ ОТ УКАЗАН ВХОДЕН ПОТОК) Направила съм това:
      class BookPage { private: int NumberPage; //номер на страница string Contents; //съдържание public: BookPage(int numberPage, string contents) { NumberPage = numberPage; Contents = contents; } BookPage() { NumberPage = 0; Contents = " "; } const int& getNumberPage()const { return NumberPage; } const string& getContents()const { return Contents; } void setNumberPage(const int& sNumPege) { NumberPage = sNumPege; } void setContents(const string& sContents) { Contents = sContents; } bool operator == (const BookPage& book)const { return this->NumberPage == book.NumberPage, this->Contents == book.Contents; } bool operator < (const BookPage& number) { return this->NumberPage < number.NumberPage; } friend ostream& operator <<(ostream& out, const BookPage& book) { out << book.NumberPage << " " << book.Contents; return out; } friend ifstream& operator >> (ostream& in, BookPage& book) { cin >> book.NumberPage >> book.Contents; return in; } };  
    • от силвия димитрова стефанова
      Здравейте! Може ли да ми помогнете дали това е правилно направено.
      BookEditor::BookEditore() { BookPage::BookPage(); GenerateBook = 0; NumberPages = ""; } ListGenerateBook(string ownerBook, int 278 pages) { GenerateBook(adress); GenerateBook::ownerBook; BookPage::278 pages BookPage = Bookwords; BookEditor = getArea; } void swapPages(int86, int second 45) { BookPage::setAdress(obj.GenerateBook::getAdress()); BookPage::setArea(obj.GenerateBook::getArea()); BookPage::setHeight(obj.GenerateBook::getHeight()); BookPage = obj.BookPage; m_strOwner = obj.m_strOwner; }  

    • от Cns a1b1c1
      Някой може ли да ми помогне за една задача C++ ... Трудно ми е не мога се справям. Ще съм ви много благодарна!
      Зад.
      Зададен е едномерен масив от цели числа А0, А1,...,Аn-1, където n e кратно на 2. Да се състави програма, която изчислява разликата между сумата на елементите от първата половина и сумата на елементите от втората половина на масива.
    • от Nikola Buchukov
      Здравейте !
      Студент съм в ТУ-Варна първа година (специалност СИТ) и като цяло имам чувството, че живея в един ежедневен кошмар. Уж те учат да програмираш ама като питаш за помощ те пренебрегват и не обясняват. Основно се занимават само с тези които знаят и могат и на такива като мен които хал хабер си нямат от С++ изобщо не се обръща внимание :'). 
      И сега по същество. Имам да направя едно домашно, което знам че е елементарно но няма как да го направя като не ми е обяснено... Въртях, суках, рових в нета и какво ли още не, но... не измъдрих нищо. Ако някой тук може да удари едно рамо и да пробва да напише нещо дори да не е целия код или знае къде е решението някъде в нета ще съм МНОГО благодарен. Ето и задачата:
       
      This exercise should familiarise you with functions and parameters. You will have to design and implement a program that helps a printer in making quotes for their products. There are many ways to write this program, but it is essential that you use functions and that you do not use any global variables (you will not even need local variables)
      PART 1 (worth 50%): A printer has the following pricing system for books. For black and white printing, each sheet of paper costs a penny. In addition, they have to make a plate for each page of the original, costing 7 pounds. For colour printing, each sheet of paper costs 4 pennies, and the plates are 28 pounds. Binding costs 2 pound per copy of the book. These prices exclude 17.5% VAT (VAT has not yet risen on this bookbinder's planet). The printing is double sided.
      As an example, printing 400 black and white books with 100 pages each costs:
      100*7 pounds £ 700.00 for the plates.
      (100/2)*400*1 pennies £ 200.00 for the paper. (2 pages per sheet)
      400*2 pounds £ 800.00 for the binding.
      Subtotal £ 1700.00
      VAT £ 297.50 17.5% over 1700 pounds
      Grand Total £ 1997.50
      1. Write a function that calculates the price of a job given the number of pages, price per sheet, price per plate, and number of copies.
      2. Write a function that calculates the price of a job given the number of pages and the number of copies for black and white printing. This function should call the function that you wrote for part 1.
      3. Write a function that calculates the price of a job given the number of pages and the number of copies for colour printing. This function should call the function that you wrote for part 1.
      4. Write a main program that calculates the total price of printing 1000 colour books with 32 pages, 2000 black/white books with 40 pages and 400 black/white books with 160 pages. The main function should call the functions that you wrote for parts 2 and 3.
      PART 2 (worth 50%):
      1. Change the function that calculates the price of a job so that it assumes that books are printed with 16-fold signatures. (ie, the number of sheets is rounded up to the nearest multiple of 16).
      Change the main function so that it prints in addition to the previous number:
      • The price of printing 50 colour books of 30 pages each with 16-fold signatures.
      • The price of printing 35 black and white books of 34 pages each with 16-fold signatures.
      Please note: You don't need to change the parameters of your functions for this part. Each printed page (including partially printed pages) will need a plate, but blank pages won't. You may print out the first answer using a 16 fold signature as well for this part. Three numbers should therefore be printed for this extension. You may wish to find out how to obtain remainders in C using the modulus operator %, for example a % b in C will give the integer remainder when a is divided by b. You may also want to look at 'typecasting' - forcing conversion from one type into another type - because it is a common technique used for rounding in C. For example, typecasting a non-whole number as an integer will round it down to the nearest integer, e.g. (int) 3.14159 will evaluate to exactly 3.
       
      2. Change the functions so that the number of pages in a signature is passed as a parameter. (ie, the number of sheets is rounded up to the nearest multiple of n, where n is the size of the signature)
      Change the main function so that it prints in addition to the previous three numbers:
      • The price of printing 35 black and white books of 34 pages each with 8 fold signatures.
      • The price of printing 100 black and white books of 34 pages each with 6 fold signatures.
       
      Please note: For this extension you must print 5 numbers (the original [under a 16 fold signature], two for the first extension, two for this second extension).
  • Дарение

×
×
  • Добави ново...

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите Условия за ползване