Loading...
MartinM13 avatar MartinM13 0 Точки

Задача 6. Благотворителна кампания - какъв е проблемът с кода ми?

Здравейте!

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

double finalprofit = sum - 1/8 * sum; - не работи

double finalprofit = sum - sum / 8; - работи 

Защо моят код не работи?

Благодаря предварително!

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

Тагове:
0
Programming Basics 11/09/2018 15:28:24
NikolayNeykov92 avatar NikolayNeykov92 617 Точки

Защото редът на математическите действия е от ляво на дясно

и тъй като нямаш поставени скоби резултата при

double finalprofit = sum - 1/8 * sum; е следния:

sum - 0*sum => sum-0 => sum 

т.е. от сумата изваждаш 0

при втория вариант имаш

sum - резултата от sum / 8 , а този резултат не е 0  

 

 

0
dimaldim92 avatar dimaldim92 149 Точки
double finalprofit = sum - (double) 1/8 * sum;

Така ще ти сработи. 1/8 е 0 - целочислено, кастнат по този начин показва 0.125 ;)

0
11/09/2018 15:38:15
EricDraven avatar EricDraven 275 Точки

също става и: 

double finalProfit = (sum / 8) * 7

 

0
jorkaev avatar jorkaev 5 Точки
import java.util.Scanner;

public class alkohol {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        double dni = Double.parseDouble(scanner.nextLine());
        double sladkari = Double.parseDouble(scanner.nextLine());
        double torti = Double.parseDouble(scanner.nextLine());
        double gofreti = Double.parseDouble(scanner.nextLine());
        double palachinki = Double.parseDouble(scanner.nextLine());

        double cenaT = 45;
        double cenaG = 5.80;
        double cenaP = 3.20;
        double sumT = torti * cenaT;
        double sumG = gofreti * cenaG;
        double sumP = palachinki * cenaT;
        double sumDen = (sumT + sumG + sumP) * sladkari;
        double sumObshto = sumDen * dni;
        double sumF =(sumObshto / 8) * 7;

        System.out.printf("%.2f", sumF);
    }
}

Кода си върви супер, но ми дава грешен изход. Нещо дребно бъркам но не се сещам какво

ето и условието на задачата:

6. * Благотворителна кампания
Тествайте решението си в judge системата: https://judge.softuni.bg/Contests/Practice/Index/1160#5
В сладкарница се провежда благотворителна кампания за събиране на средства, в която могат да се включат
сладкари от цялата страна. Първоначално прочитаме от конзолата броя на дните, в които тече кампанията и
броя на сладкарите, които ще се включат. След това на отделни редове получаваме количеството на
тортите, гофретите и палачинките, които ще бъдат приготвени от един сладкар за един ден. Трябва да се
има предвид следния ценоразпис:
 Торта - 45 лв.
 Гофрета - 5.80 лв.
 Палачинка – 3.20 лв.
1/8 от крайната сума ще бъде използвана за покриване на разходите за продуктите по време на
кампанията. Да се напише програма, която изчислява сумата, която е събрана в края на кампанията.
Вход
От конзолата се четат 5 реда:
1. Броят на дните, в които тече кампанията – цяло число в интервала [0 … 365]
2. Броят на сладкарите – цяло число в интервала [0 … 1000]
3. Броят на тортите – цяло число в интервала [0… 2000]
4. Броят на гофретите – цяло число в интервала [0 … 2000]
5. Броят на палачинките – цяло число в интервала [0 … 2000]
Изход
Да се отпечата на конзолата едно число:
 парите, които са събрани, форматирани до втория знак след десетичната запетая.

 

Вход Изход Обяснения
20
8
14
30
16
119728.00 Изчисляваме сумата, която се изкарва на ден за всеки един от продуктите,

направени от 1 сладкар:
Торти: 14 * 45 = 630 лв.;
Гофрети: 30 * 5.80 = 174 лв.;
Палачинки: 16 * 3.20 = 51.20 лв.
Обща сума за един ден: (630 + 174 + 51.20) * 8 = 6841.60 лв.
Сума събрана от цялата кампания: 6841.60 * 20 = 136832лв.
Сума след покриване на разходите: 136832 - 1/8 от 136832 = 119728 лв.

0
gtsonkov avatar gtsonkov 59 Точки

Бих ти препоръчал да си разбиеш задачата на стъпки и да гледаш внимателоно къде се дъни. Първо за да си олесниш живота чети внимателно условието, дните от седмижата, както и броя на тортите, гуфретите и палачинките ти се дават в цяло число (int или integer нз. как е точно  в Java). Само кинтите и крайният резултат трябва да са double. Всичко изглежда вярно но последният израз, който ти връща крайният резултата е грешен спрямо условието. В условието е казано (за благотворителност отиват всички събрани пари, като от тях се извади 1/8 за продуктите) т.е от крайната сума вадиш една осма от нея и това ти е крайният резултат. Или в твоят случай: 

double sumF = sumObshto - (sumObshto / 8) ;

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

0
13/09/2018 20:03:32
jorkaev avatar jorkaev 5 Точки

Намерих си грешката, но не е там където казваш - този ред си е верен ( и моя и твоя вариянт са верни ) 8/8 - 1/8 = 7/8 ( 1/8 * 7 = 7/8) 

Грешката е елементарна просто трябваше да почина 10 мин и да погледна пак за да я открия, а именно:

 double sumP = palachinki * cenaT(това е цената на торите, а трябва да е на палачинките - cenaP);

Благодаря ти все пак. 

0
EmoBG avatar EmoBG 2 Точки

Мисля, че грешката ти е тук:   

double sumP = palachinki * cenaT;

Трябва да бъде:

double sumP = palachinki * cenaP;

0
gtsonkov avatar gtsonkov 59 Точки

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

Опитай по този начин 

double result = obshtasuma - (obshtasuma/8);

след това закръгляш до втория знак и печаташ.

0
rumenhco2001 avatar rumenhco2001 4 Точки

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Charity_Campaign
{
    class Program
    {
        static void Main(string[] args)
        {
            int days = int.Parse(Console.ReadLine());
            int confectioner = int.Parse(Console.ReadLine());
            int cakes = int.Parse(Console.ReadLine());
            int waffles = int.Parse(Console.ReadLine());
            int pancakes = int.Parse(Console.ReadLine());
            int moneyc = cakes * 45;
            double moneywaffles = waffles * 5.80;
            double moneypancakes = pancakes * 3.20;
            double moneyday = (moneyc + moneywaffles + moneypancakes) * confectioner;
            double moneyall = moneyday * days;
            double final = moneyall - (moneyall/8); 
            Console.WriteLine("{0:F2}", final);


        }
    }
}
 

 

Това е моят код на решението. Можеш да проследиш логиката. На мен тази задача не ми беше толкова трудна, продължавам напред. Успех и на теб! =)

0
popopo avatar popopo 1 Точки

Здравейте, колеги, можете ли да ми кажете къде е проблема - във Вижуъл Студио ми излиза резултата точно, но Judge ми дава само 70 точки, няколко теста гърмят, благодаря предварително:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Charity_Campaign
{
    class Program
    {
        static void Main(string[] args)
        {
            int days = int.Parse(Console.ReadLine());
            int participants = int.Parse(Console.ReadLine());
            int cakes = int.Parse(Console.ReadLine());
            int gofrettes = int.Parse(Console.ReadLine());
            int pancakes = int.Parse(Console.ReadLine());
            int priceCookedCakes = days * participants * cakes * 45;
            double priceCookedGofrettes = days * participants * gofrettes * 5.8;
            double priceCookedPancakes = days * participants * pancakes * 3.2;
            double raisedMoney = (priceCookedCakes + priceCookedGofrettes + priceCookedPancakes) * 7 / 8;
            Console.WriteLine($"{raisedMoney:F2}");

        }
    }
}

0
The_assassin avatar The_assassin 158 Точки
 Charity_Campaign.cs.orig => Charity_Campaign.cs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Charity_Campaign.cs.orig b/Charity_Campaign.cs
index 2032772..870ee01 100644
--- a/Charity_Campaign.cs.orig
+++ b/Charity_Campaign.cs
@@ -15,7 +15,7 @@ namespace Charity_Campaign
             int cakes = int.Parse(Console.ReadLine());
             int gofrettes = int.Parse(Console.ReadLine());
             int pancakes = int.Parse(Console.ReadLine());
-            int priceCookedCakes = days * participants * cakes * 45;
+            double priceCookedCakes = days * participants * cakes * 45.00;
             double priceCookedGofrettes = days * participants * gofrettes * 5.8;
             double priceCookedPancakes = days * participants * pancakes * 3.2;
             double raisedMoney = (priceCookedCakes + priceCookedGofrettes + priceCookedPancakes) * 7 / 8;

П.П: Виж редовете с + и -! Не знам защо не го оцветява както трябва.... frown

0
25/10/2018 08:58:27
setabg avatar setabg 3 Точки

Ето моето решение, дано ти подскаже нещо:

 static void Main(string[] args)
        {
            double Days = double.Parse(Console.ReadLine());
            double Shefs = double.Parse(Console.ReadLine());
            double Tort = double.Parse(Console.ReadLine());
            double Gof = double.Parse(Console.ReadLine());
            double Pan = double.Parse(Console.ReadLine());
            double Day = ((Tort * 45) + (Gof * 5.8) + (Pan * 3.20)) * Days * Shefs;
            double area = Day - (Day / 8);
            Console.WriteLine($"{area:F2}");

        }

0
pratchet avatar pratchet 2 Точки
Работи перфектно:

 




import java.util.Scanner;

public class charityCampaign {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);

        int days = Integer.parseInt(scanner.nextLine());
        int bakers = Integer.parseInt(scanner.nextLine());

        int cake = Integer.parseInt(scanner.nextLine());
        int wafer = Integer.parseInt(scanner.nextLine());
        int pancake = Integer.parseInt(scanner.nextLine());

        int cakePrice = cake * 45;
        double waferPrice = wafer * 5.80;
        double pancakePrice = pancake * 3.20;

        double bakerPerDay = cakePrice + waferPrice + pancakePrice;

        double count = bakers * bakerPerDay * days;

        double finalSum = (count / 8) * 7;

        System.out.printf("%.2f", finalSum);



    }
}

 

0
dekploy avatar dekploy 0 Точки
  1. import java.util.Scanner;

  2.  

  3. public class BackToTheFuture {

  4.     public static void main(String[] args) {

  5.         Scanner scanner = new Scanner(System.in);

  6.  

  7.         double inheritanceMoney = Double.parseDouble(scanner.nextLine());

  8.         int yearsToLiving = Integer.parseInt(scanner.nextLine());

  9.         int yearsIvan = 18;

  10.        

  11.         for (int currentYear = 1800; currentYear < yearsToLiving; currentYear++) {

  12.             if (currentYear % 2 == 0) {

  13.                 inheritanceMoney -= 12000;

  14.  

  15.             } else {

  16.                 inheritanceMoney -= (12000 + 50 * yearsIvan);

  17.             }

  18.             yearsIvan++;

  19.         }

  20.         if (inheritanceMoney > 0) {

  21.             System.out.printf("Yes! He will live a carefree life and will have %.2f dollars left.", inheritanceMoney);

  22.         } else {

  23.             System.out.printf("He will need %.2f dollars to survive.", Math.abs(inheritanceMoney));

  24.         }

  25.     }

  26. }

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.