Софтуерно Инженерство
Loading...
+ Нов въпрос
ItsoDimitrov avatar ItsoDimitrov 28 Точки

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

Здравейте ! 

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

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

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

zhivko1985 avatar zhivko1985 30 Точки

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

Да не си ги направил в 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 744 Точки

Когато има пресмятания с пари се използва тип - 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 86 Точки

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

             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 106 Точки

Това е така, защото променливата, е преобразувана от 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 46 Точки

Здравей,

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

0
MartinBG avatar MartinBG 608 Точки

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

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

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

1
boriskostoff avatar boriskostoff 0 Точки

Ехо, банда.

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

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

0