Иди на:  
търсене   регистрация   чат   помощ   правила   влизане в сайта
Автор Съобщение

Аватар
Регистриран на:
14 Юни 2009 09:25
Мнения: 3305
Заглавие: помощ със задача на С++
Публикувано на: 20 Юни 2009 10:25


Изпаднах в затруднено положение. Не знам до колко е подходящо да питам тук, но съм отчаян. :lol: Имам годишен проект и трябва да го завърша до понеделник.
Ето я и задачата.
Код:
Търговец държи точна сметка на това с колко банкноти разполага във всеки един момент. Банкнотите са с номинали 50,20,10,5,2 и 1 лв. Вашата задача е да помогнета на продавачите, като покажете за произволна съма по колко банкноти от всеки номинал са необходими. Освен това, ако дадена сума може да се представи нееднозначо, то трябва да се използват по възможност банкноти с по-висок номинал.

Та, до колкото виждам, трябва да се напише програма, която да изкарва за даден продукт колко банкноти са необходими и тези банкноти да са с възможно най-висок номинал.
И ако не ви се занимава да пишете задачата, поне ми помогнете с логическата част, ако имате необходимите знания. Ще бъда безкрайно благодарен за всякаква помощ. :D

:IMNOOB:


Профил

Аватар
Регистриран на:
23 Фев 2007 13:58
Мнения: 359
Местоположение: Tillilean Forest
Заглавие: Re: помощ със задача на С++
Публикувано на: 20 Юни 2009 11:29


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

Пример:

Сумата, която трябва да върнеш е 394 лева.
Делим целочислено на 50 - 394/50 = 7 и остатък 44
Делим целочислено на 20 - 44/20 = 2 и остатък 4
Делим целочислено на 10 - 4/10 = 0 и остатък 4
Делим целочислено на 5 - 4/5 = 0 и остатък 4
Делим целочислено на 2 - 4/2 = 2 и остатък 0

Сумата от 394 лева се представя като 7 банкноти по 50 лева, 2 банкноти по 20 лева и 2 банкноти по 2 лева.

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

___________________________________
A slight call afar is tempting me
Like a whisper sweet or an awful scream
I cannot ignore what I've always been
I am leaving again - one last time?


Профил

Аватар
Регистриран на:
14 Юни 2009 09:25
Мнения: 3305
Заглавие: Re: помощ със задача на С++
Публикувано на: 21 Юни 2009 14:13


Много съм ти благодарен, наистина много ми помагаш. :)
Сега ще видя как ще се справям със синтаксиса, но това е резултата от цяла година мързелуване. :D
Отново ти благодаря.


Профил

Аватар
Регистриран на:
13 Юни 2008 18:10
Мнения: 1869
В момента играе: RL - worst game ever.
Заглавие: Re: помощ със задача на С++
Публикувано на: 21 Юни 2009 17:30


Ако още не си готов, значи си бая закъсал. Поствам долу един вариант, 10-12 минути работа е. Учи си кода, ей!


Код:
#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
    cout << "Programa za presmiatane na broia banknoti za predstaviane na dadena suma v 0.1. " << endl << endl;
    int dummy = 1; int a, b;
    while(dummy==1) {
   
    cout << "Vuvedete sumata ili vuvedete 0 (nula) za krai: ";
    cin >> a;
    cout << endl;
     if(a<0)  {cout << "Greshen input - sumata ne moje da e otricatelna! " << endl;}
     if(a==0) {dummy=0;}
     if(a>0) {
      cout << endl;
      b=a/50;
      cout << "Sumata ot " << a << " leva se predstavia " << b << " banknoti po 50 leva, ";
      a=a%50;
      b=a/20;
      cout << b << " banknoti po 20 leva, " ; 
      a=a%20;
      b=a/10;
      cout << b << " banknoti po 10 leva, " ;
      a=a%10;
      b=a/5;
      cout << b << " banknoti po 5 leva, " ;
      a=a%5;
      b=a/2;
      cout << b << " banknoti po 2 leva i " ;
      a=a%2;
      b=a/1;
      cout << b << " banknoti po 1 lev." << endl << endl;
             } 
                     }                                                 

    return EXIT_SUCCESS;
}




Не съм слагал проверка дали инпута е число, надявам се учителя ти да не е такъв гъз, че да напише вместо сума името си :D

___________________________________
What's a real girl? Is it something fap-able?
indeedhewasshady.


Профил

Аватар
Регистриран на:
14 Юни 2009 09:25
Мнения: 3305
Заглавие: Re: помощ със задача на С++
Публикувано на: 22 Юни 2009 08:27


Ами помогнаха ми малко :oops: и сега имам още две решения (+ твоето 3 :D ) но спокойно мога да кажа, че твоето е най-изпипаното. 8)
Много ти благодаря шади, видело се е, че ще те черпавам некой път. :P :D :D :D
Ще дам и другите две решения.
Код:
#include<iostream>
using namespace std;

int bn[6]={50,20,10,5,2,1};
int sbn[6];
int sum;
int i;
int main(){
    cout<<"summa za izchislenie=";
    cin>>sum;
    for(i=0;i<6;i++){
        sbn[i]=sum/bn[i];
        sum=sum%bn[i];
        cout<<bn[i]<<"=>"<<sbn[i]<<endl;


и

Код:
#include <iostream>
#include <stdlib.h>

using namespace std;

int main(int argc, char *argv[])

{
int sum,pet,dva,des,pe,dve,edno;
cout<<"vuvedete sumata: ";
cin>>sum;
pet=sum/50;
if(pet==0)
pet=0;
sum=sum%50;
dva=sum/20;
if(dva==0)
dva=0;
sum=sum%20;
des=sum/10;
if(des==0)
des=0;
sum=sum%10;
pe=sum/5;
if(pe==0)
pe=0;
sum=sum%5;
dve=sum/2;
if(dve==0)
dve=0;
sum=sum%2;
edno=sum/1;
if (edno==1)
{
cout<<"sumata se razdelq na: " <<pet<< " po 50 " <<dva<< " po dvaiset " <<des<< " po deset " <<pe<< " po pet " <<dve<< " po dve " <<edno<< " po edno "<<"\n";
}
else
{
cout<<"sumata se razdelq na: " <<pet<< " po 50 " <<dva<< " po dvaiset " <<des<< " po deset " <<pe<< " po pet " <<dve<< " po dve "<<"\n";
}
 
  system("PAUSE");   
  return 0;
}



:D


Профил

Аватар
Регистриран на:
14 Юни 2009 09:25
Мнения: 3305
Заглавие: Re: помощ със задача на С++
Публикувано на: 23 Юни 2009 12:09


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


това е условието
Код:
Точка от равнината с реални координати (х,у) можем да представим като двуелементен масив с тип double.Да се напише програма,която чете координатите на четири точки,представляващи върховете А,Б,С и Д на четириъгълник в цикличен ред(по часовниковата стрелка или обратно) и определя дали А,Б,С,Д е квадрат,правоъгълник или друга фигура.


това е задачата

Код:
#include <iostream>
#include <stdlib.h>
#include <math.h>

using namespace std;
int main(int argc, char *argv[])
{
double a[2],b[2],c[2],d[2];
double ab, bc, cd, da, bd;

// char out[]=”зададените координати са на друга фигура”;
char out[10];

  printf ("Въведете координатите на точка А");
  scanf("%lf %lf", &a[0],&a[1]);
  printf ("Въведете координатите на точка B");
  scanf("%lf %lf", &b[0],&b[1]);
  printf ("Въведете координатите на точка C");
  scanf("%lf %lf", &c[0],&c[1]);
  printf ("Въведете координатите на точка D");
  scanf("%lf %lf", &d[0],&d[1]);
ab = sqrt(pow(b[0]-a[0]),2)+pow (b[1]-a[1]),2));   (<= тук дава грешката о.О)
bc = sqrt(pow(c[0]-b[0]),2)+pow (c[1]-b[1]),2)); 
cd = sqrt(pow(d[0]-c[0]),2)+pow (c[1]-d[1]),2));
da = sqrt(pow(d[0]-a[0]),2)+pow (a[1]-d[1]),2));
bd = sqrt(pow(b[0]-d[0]),2)+pow (b[1]-d[1]),2));

if (ab == cd) && (bc == da) && (bd == sqrt (ab**2 + bc**2)) then

if cd == bc then

out = “зададените координати са на квадрат”;

else out = “зададените координати са на правоъгълник”;

printf(%s, out);
}
  system("PAUSE");   
  return 0;
}



Профил

Аватар
Регистриран на:
23 Фев 2007 13:58
Мнения: 359
Местоположение: Tillilean Forest
Заглавие: Re: помощ със задача на С++
Публикувано на: 23 Юни 2009 15:18


pow(b[0]-a[0]),2) - затваряш pow-а след a[0], което води до това, че го чете като функция с един аргумент, а не с два. Махни излишната скоба.

Също така си забравил да отвориш скоба на if (ab == cd) && (bc == da) && (bd == sqrt (ab**2 + bc**2)), която затваряш. Също така имаш THEN, не затваряш и не отваряш скоби като хората, използваш scanf и printf вместо в пъти по-удобните потоци, масива ти на текста е 10 символа, а текстовете, които се опитваш да вкараш в него са над 30 символа... a всъщност ти по този начин въобще не можеш да присвоиш стойност на стринг...

Код:
#include <iostream>
#include <stdlib.h>
#include <math.h>
#include <string.h>
using namespace std;

int main(int argc, char *argv[])
{
   double a[2],b[2],c[2],d[2];
   double ab, bc, cd, da, bd;
   // char out[]=”зададените координати са на друга фигура”;
   char out[50];
   cout<<"Въведете координатите на точка А";
   cin>>a[0]>>a[1];
   cout<<"Въведете координатите на точка B";
   cin>>b[0]>>b[1];
   cout<<"Въведете координатите на точка C";
   cin>>c[0]>>c[1];
   cout<<"Въведете координатите на точка D";
   cin>>d[0]>>d[1];
   ab = sqrt(pow(b[0]-a[0],2)+pow (b[1]-a[1],2));
   bc = sqrt(pow(c[0]-b[0],2)+pow (c[1]-b[1],2));
   cd = sqrt(pow(d[0]-c[0],2)+pow (c[1]-d[1],2));
   da = sqrt(pow(d[0]-a[0],2)+pow (a[1]-d[1],2));
   bd = sqrt(pow(b[0]-d[0],2)+pow (b[1]-d[1],2));
   if((ab==cd)&&(bc==da)&&(bd==sqrt(pow(ab, 2) + pow(bc, 2))))
   {
      if (cd==bc)
      {
         strcpy(out, "зададените координати са на квадрат");
      }
      else
      {   
         strcpy(out, "зададените координати са на правоъгълник");
      }
   }
   cout<<out;
   system("PAUSE");   
   return 0;
}

___________________________________
A slight call afar is tempting me
Like a whisper sweet or an awful scream
I cannot ignore what I've always been
I am leaving again - one last time?


Профил

Аватар
Регистриран на:
01 Фев 2003 11:45
Мнения: 1542
Местоположение: London, UK
Заглавие: Re: помощ със задача на С++
Публикувано на: 23 Юни 2009 15:42


Лош вкус е да смесваш С++ и С.
printf си е за С, <iostream> ти дава cout, cin.
<math.h> (както и всичко .h) е за С, В С++ имаш <cmath>
<stdlib.h> -> <cstdlib>

Имена на променливи като a, b,c, ab, bc и т.н. са безумие.
Името на променливата трябва кратко и ясно да подсеща какво върши тя.

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

___________________________________
Chris написа:
Vermic написа:
Тъъъъъ тъъъъ дъъъъ дъъъъъъъъъъъ дъ дъ да да да па па да па па да дъъъъъ дааааааааааааааа!

Музиката от Star Wars ли е това или бъркам? Щото тя е Търъдъдъъън дъъън дъръдъдъъън а твойта версия някво различно ми звучи :?


Профил ICQ
Покажи мненията от миналия:  Сортирай по  

Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения

Търсене:
 
Иди на:  
© 2009 PC Mania | Реклама | Контакти web by: ilyan.com