ПРОГРАМИРАЊЕ И ПРОГРАМСКИ ЈАЗИЦИ

  • Креатор на темата Креатор на темата moTaro
  • Време на започнување Време на започнување
Статус
Затворена за нови мислења.
IGI напиша:
Почетник сум во Java. Пред некој ден го направив програмов за евидентирање на платежни чекови.

На кратко ке ја објаснам програмата:
Прво те прашува за името на вработениот.
После те прашува колку ке го платиш од саат.
После те прашува за секој ден од понеделник до петок колку часа работел.
- Ако работел до 8 саати ке му бидат платени тие 8, ако работи поише од 8 секој следен час ке му биде платен како 1.5 часа. Највеке може да работи 10 саати.

Потоа те прашува колку работел во сабота.
Ако од понеделник до петок има направено повеке од 40 часа, секој час во сабота му е платен како 1.5 час.
Ако на пример од понеделник до петок има 38 часа, а во сабота 5, 2 од сабота ке му бидат платени регуларно а другите 3 како 1.5 часа.
Во сабота може да работи највеке 5 часа.
Сега едно не разбирам... зошто би давал услови, ако работи од 8 до 10 часа во денот? Па може само на крај, доколку работи повеќе од 40 часа останатите сметај ги по 1.5 :) едноставно е, резултатот е ист, а програмата, многу помала. Јаху ок е ова твоето, но не се придржваш кон ниеден услов... тоа е проблемот

Eве како би го решил во C#
Код:
        string ime;
        double pon, vtor, sred, cetv, peto, sabo, pari;
        double vkupno, krajnacena;
        ime = TextBox1.Text;
        pari = Convert.ToInt32(TextBox2.Text);
        pon = Convert.ToInt32(TextBox3.Text);
        vtor = Convert.ToInt32(TextBox4.Text);
        sred = Convert.ToInt32(TextBox5.Text);
        cetv = Convert.ToInt32(TextBox6.Text);
        peto = Convert.ToInt32(TextBox7.Text);
        sabo = Convert.ToInt32(TextBox8.Text);
        vkupno = pon+vtor+sred+cetv+peto+sabo;
        if (vkupno > 40)
        {
            krajnacena = 40 * pari + (vkupno - 40) * pari * 1.5;
        }
        else
        {
            krajnacena = vkupno * pari;
        }
        Label1.Text = "Kratok pregled za rabotnikot " + ime + "<br>Vkupno rabotel " + vkupno + " casa<br>Vkupno zarabotil " + krajnacena + " denari";
 
Димитар напиша:
Сега едно не разбирам... зошто би давал услови, ако работи од 8 до 10 часа во денот? Па може само на крај, доколку работи повеќе од 40 часа останатите сметај ги по 1.5 :) едноставно е, резултатот е ист, а програмата, многу помала. Јаху ок е ова твоето, но не се придржваш кон ниеден услов... тоа е проблемот

Другар нема да биде исто. Да речеме дека во понеделник работел 10 часа, 8 ке му бидат платени регуларно а другите 2 * 1.5. Вторник до петок работи по 2 саати.. значи не поминува 40 таа недела али сепак има 2 часа * 1.5. Твојата варијанта не би пресметала така.
 
Абе таман е. Можам да направам ако работи над 10 часа да додаде уште неколку долари во касата. Инаку јас не го правев исто како IGI. Слично е.
 
IGI напиша:
Другар нема да биде исто. Да речеме дека во понеделник работел 10 часа, 8 ке му бидат платени регуларно а другите 2 * 1.5. Вторник до петок работи по 2 саати.. значи не поминува 40 таа недела али сепак има 2 часа * 1.5. Твојата варијанта не би пресметала така.
Ок, не го сфатив баш условот... еве го, сепак не е толку код како кај тебе.... Сега е ОК, според сите услови што се бараат. Ова е во C#, го средив во функција

PHP:
    protected void Presmetka(string ime, int pari, int[] den)
    {
        double vkupno=0, krajnacena=0;
        ime = TextBox1.Text;
        pari = Convert.ToInt32(TextBox2.Text);
        for (int i = 0; i < 5; i++)
        {  
            if (den[i] > 8) krajnacena += 8 * pari + (den[i] - 8) * pari * 1.5;
            else krajnacena += den[i] * pari;
            vkupno += den[i]; 
        }
        if ((vkupno > 40)) krajnacena += den[6] * pari * 1.5;
        if ((vkupno < 41) && ((vkupno + den[6]) > 40)) krajnacena += (40 - vkupno) * pari + (den[6] - (40 - vkupno)) * pari * 1.5;
        if ((vkupno < 41) && ((vkupno + den[6]) < 41)) krajnacena += den[6] * pari;
        vkupno = vkupno + den[6];      
        Label1.Text = "Kratok pregled za rabotnikot " + ime + "<br>Vkupno rabotel " + vkupno + " casa<br>Vkupno zarabotil " + krajnacena + " denari";
    }
Се повикува
PHP:
 int[] den = {Convert.ToInt32(TextBox3.Text), Convert.ToInt32(TextBox4.Text), Convert.ToInt32(TextBox5.Text),Convert.ToInt32(TextBox6.Text),Convert.ToInt32(TextBox7.Text), Convert.ToInt32(TextBox8.Text) };
        Presmetka(TextBox1.Text, Convert.ToInt32(TextBox2.Text), den);
еве скриншот ако има внесето точни вредности
pravilniun8.jpg


А еве ако има неправилни
nepravilnils6.jpg
 
јахутерминал напиша:
Абе таман е. Можам да направам ако работи над 10 часа да додаде уште неколку долари во касата. Инаку јас не го правев исто како IGI. Слично е.
Слично ама многу многу полесно да се направи.
Иначе ми се свиѓа ова на Димитар:).
 
Многу интересна идеја е ова, една програма да се направи во повеќе програмски јазици, и да се прави споредба меѓу кодовите... Мене искрено најповеќе ми се допадна кодот на Димитар, бидејќи ми се виде најпрост и најкомпактен, а ја врши истата работа... Да знаев програмирање нешто повеќе, и јас ќе придонесев за темава, ама тоа покасно, затоа што се занимавам со други работи моментално.
 
јахутерминал напиша:
Иначе сега ќе преминам и на VB.NET, имам книга од Славчо Горчески и така, уште малку ми остана Pascal.

TOA NE E ZA NET TOA E ZA VB 6!
 
Има и таква и таква книга, но не ви треба.... се што ви треба е ASP.NET видео туториалите (www.asp.net). Ако ги поминете тие! наздравје!

П.С. Малку го менав горе кодот (го намалив) сега е уште помалку
 
IGI еве го целиот програм со сите услови:
Код:
program vraboten;
uses
wincrt;
var ime:string;
    pari,pariV,saati1,saati2,n:real;
    i:integer;

begin
writeln('Dojbredojde vo programot na jaxyterminal');
writeln('Napisi go imeto na vraboteniot');
readln(ime);
writeln('Kolku ke go platis ',ime,' na saat (sumata e vo dolari)');
readln(pari);
n:=0;
pariV:=0;
for i:=1 to 5 do
begin
writeln('Napisi kolku saati rabotel den',' #',i,' i pritisni enter:');
repeat
readln(saati1);
if saati1>10 then writeln('Vnesete cas ispod 10 ili 10');
until (saati1<=10);
n:=saati1+n;

if saati1<=8 then pariV:=pariV+saati1*pari;
if saati1>8 then pariV:=pariV+(saati1-(saati1-8))*pari+1.5*(saati1-8)*pari;

end;
writeln('Kolku saati rabotel vo sabota?');
repeat
readln(saati2);
if saati2>=6 then
writeln('Ve molime vnesete validnen broj na casovi (ispod 6)');
until (saati2<6);


writeln('Kratok pregled na vraboteniot ',ime);
writeln('Vkupno rabotni casa ',n+saati2:2:2);

if n>40 then saati2:=saati2*1.5;

pariV:=pariV+saati2*pari;

writeln('Vkupno zaraboteno ',pariV:2:2,'$');
writeln('Prijaten den');

end.
Еве го и во .exe екстензија. Поздрав.:helou:
 

Attachments

Da ne znajte nekoja elektronska bibloteka vo koja ke mozam da najdam knigi za C programiranje
 
Еве ја мојата интерпретација на програмата.. ништо посебно - 153 линии код, коментари и празни редови :)

Куцано во SciTE, пишувано во и компајлирано со AutoIt 3.
На латиница, за да не работам на слепо (мојава верзија на XP не поддржува локализација на македонски).. функциите се горе-доле исти, додаден е GUI :)

Кодот и exe фајлот се под сликата.

mehlx0.jpg
 

Attachments

Статус
Затворена за нови мислења.

Kajgana Shop

Back
На врв Bottom