Loading...
ItsoDimitrov avatar ItsoDimitrov 28 Точки

Money - Изпитна задача, Programming Basics

Здравейте ! 

Нещо не ми е ясна тази задача и ако може малко помощ . 

Не схващам как се получава числото, което съм оградил в червено - http://imgur.com/a/YEEgq . 

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

0
Programming Basics
zhivko1985 avatar zhivko1985 34 Точки

Здравей, кое точно не ти е ясно?

Да не си ги направил в int, вместо double?

Това е моето решение от изпита:

 

        static void Main()
        {
            double bitcoins = double.Parse(Console.ReadLine())*1168;
            double yuan = double.Parse(Console.ReadLine())*0.15*1.76;
            double commission = double.Parse(Console.ReadLine())/100;

            double bitcoinsToEur = bitcoins / 1.95;
            double yuanToEur = yuan / 1.95;

            Console.WriteLine((bitcoinsToEur + yuanToEur)-((bitcoinsToEur + yuanToEur)*commission));
        }

1
nicktron avatar nicktron 10 Точки

1169,32 лева, за да станат в евро трябва да разделиш 1169,32 на 1,95 и се получава  599.651282051282 евро.
Надявам се да съм Ви бил полезен! :)


 

0
borislav9212 avatar borislav9212 745 Точки

Когато има пресмятания с пари се използва тип - decimal, той е най-точния. След чеслото се слага сулфиксното m, защото по подразбиране се взима тип double.

0
ItsoDimitrov avatar ItsoDimitrov 28 Точки

Благодаря за отговорите ! Сега я почвам и ще пратя и моето решение : ) 

0
mrfreeman avatar mrfreeman 11 Точки

Точно на тази задача и аз започнах с тип decimal защото е най-точен и получих 0/100 точки заради закръгляването (въпреки че в условието пише че не е нужно да се закръглява) Минах на double --> 100/100 :)

0
ItsoDimitrov avatar ItsoDimitrov 28 Точки

http://pastebin.com/wtRCVdhH - Ето го и моето решение : ) 

1
deviol avatar deviol 0 Точки

Надявам се мога да попитам тук, защото имах проблем със същата задача на изпита.Тъй като я писах на C++ имах проблем със закръглянето на отговора,защото незнам дали от езика или компилатора, но автоматично го закръгляше до 2рия знак след запетаята.Сложих setprecision  и fixed, но пак в judje  ми даде 8/100 дори отговорите на примерните тестове във файла да бяха същите с мойте,но до определен знак закръглени.Един от асистентите ми каза, че нeстава, защото е на C++ и трябва да я напиша на C#, но нямах време, защото имаше по-малко от минута от края на изпита.Това е кода:
 

#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
    int bitcoins;
    double uans;
    double percent;
    double result;
    double dollars, leva, euro;

    cin >> bitcoins >> uans >> percent;
    dollars = uans * 0.15;
    leva = bitcoins * 1168 + dollars * 1.76;
    euro = leva / 1.95;
    result = euro - ((percent * euro) / 100);

    cout << result;
}

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

0
DimitarKarev avatar DimitarKarev 87 Точки

Моето решение:

             var bitkoins = int.Parse(Console.ReadLine());
            double uans = double.Parse(Console.ReadLine());
            double procentComision = double.Parse(Console.ReadLine());
            double bitkoinsInLeva = bitkoins * 1168;
            double uansInLeva = uans * 0.15 * 1.76;
            double totalInEvro = (bitkoinsInLeva + uansInLeva) / 1.95;
            double total = totalInEvro - totalInEvro * procentComision / 100;
            Console.WriteLine(total);

0
Leprikona avatar Leprikona 108 Точки

Това е така, защото променливата, е преобразувана от double в decimal. Decimal винаги се използва за пресмятания с валути, защото е по-точен от double.

0
15/09/2016 09:17:45
MHADZHIEVA avatar MHADZHIEVA 1 Точки

Здравейте!

Имам проблем с тази задача на Java. Judge ми дава само 16 точки, тъй като има разлика в закръглянето.

import java.util.Scanner;

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

        int Onebitcoin = 1168;
        double oneChineseYuan = 0.15;
        double OneDollar = 1.76;
        double OneEuro = 1.95;


        double bitcoins = Double.parseDouble(console.nextLine());

        double chineseYuan = Double.parseDouble(console.nextLine());

        double commission = Double.parseDouble(console.nextLine());


        bitcoins = bitcoins * Onebitcoin;
        chineseYuan = oneChineseYuan * chineseYuan;
        chineseYuan = chineseYuan * OneDollar; ;

        bitcoins = bitcoins + chineseYuan;
        bitcoins = bitcoins / OneEuro;

        commission = bitcoins * commission / 100;

        double result = bitcoins - commission;
        System.out.println(result);

    }
}

0
NedNikolov avatar NedNikolov 45 Точки

Здравей,

    Имам същия проблем, решавах задачата и при използване на double ми изкарва 16/100, а при използване на BigDecimal ми дава 8/100. Някой да е изкарал 100/00, но на Java? При C# като си използвам с double ми дава 100 точки, а аз приграмирам на Java и наистина искам да рабера къде е проблема при тази елементарна задача.

0
MartinBG avatar MartinBG 4803 Точки

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

Както отбелязаха и колегите по-горе, проблемът е породен от начина на закръгляне на реални числа в Java, който е различен от този в C# (форматът, който очаква Judge за тази задача).

Има и други подобни задачи в минали изпити. Да се надяваме, че всичко ще е точно, за изпита през март! :)

1
boriskostoff avatar boriskostoff 0 Точки

Ехо, банда.

Тъкмо досега си блъсках главата с тази задача. Не ми се получава просто защото не я решавам правилно чисто математически (макар тази с валута от урок 2.1 да ми се получи от първия път).

Някой би ли бил така добър да ми разясни самата логика на конвертиране?

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