Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Mala pomoc za C#, algoritam za kombinovanje markica na pismu

[es] :: .NET :: Mala pomoc za C#, algoritam za kombinovanje markica na pismu

[ Pregleda: 4264 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

lukaserdar
Student ETFa

Član broj: 308368
Poruke: 2
*.dynamic.sbb.rs.



Profil

icon Mala pomoc za C#, algoritam za kombinovanje markica na pismu03.11.2012. u 12:44 - pre 138 meseci
Zdravo,

mom bratu treba neki program i od mene je zatrazio pomoc, s obzirom da ja to studiram. Program cu da mu napravim u C#, znam ja kako da uradim programerski deo, ali ne znam kako da smislim algoritam za program, pa me zanima dal neko ima ideju kako bi mogao to da uradim.

Program bi trebao da nakon unosa vrednosti pisma (valuta nije bitna) da izbaci koliko mogucnosti postoji da se to pismo izlepi sa markicama ako te markice mogu da imaju vrednost 4,6 i 10. To je neka kombinatorika pa sad ne znam da li ima neka posebna formula za izracunavanje toga ili je neki ciklus u programu.

Ako neko ima ideju kako bi to mogao da uradim, mnogo bi mi znacilo. Ne treba mi programski kod, nego objasnjenje kako to mogu da izvedem.

Hvala u napred :)
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6275

Sajt: pedja.supurovic.net


+1570 Profil

icon Re: Mala pomoc za C#, algoritam za kombinovanje markica na pismu03.11.2012. u 13:26 - pre 138 meseci
Vrednost pisma podeliš sa 10, odbiješ decimalni deo i dobiješ koliko markica od 10 dinara treba.

Onda ostatak podeliš sa 6, odbiješ decimalni deo pa vidiš koliko markica od 6 dinara treba.

Zatim i preostali deo podeliš sa 4 i dobiješ koliko markica od 4 dinara treba...

Ako nema markica manje vrednosti od 4 onda broj tih markica zaokružiš na prvi veći ceo broj.

Tako dobiješ najoptimalnuju kombinaciju.

Šta će mu ostale kombinacije, ne znam, ne vidim smisao u takvom zahtevu.


 
Odgovor na temu

lukaserdar
Student ETFa

Član broj: 308368
Poruke: 2
*.dynamic.sbb.rs.



Profil

icon Re: Mala pomoc za C#, algoritam za kombinovanje markica na pismu03.11.2012. u 13:33 - pre 138 meseci
On meni kaze da samo treba da izbaci broj mogucih kombinacija.. i ja sam mislio da tako treba, al me on ispravio :)
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6275

Sajt: pedja.supurovic.net


+1570 Profil

icon Re: Mala pomoc za C#, algoritam za kombinovanje markica na pismu03.11.2012. u 13:48 - pre 138 meseci
Onda, evo ti jedan programerski savet - nek ti objasni smisao pa ako ti bude prihvatljiv, onda vidi da li ćeš time da se baviš. Ako ti nije razuman smisao, onda mu traži pare :)
 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1343
*.dynamic.sbb.rs.



+311 Profil

icon Re: Mala pomoc za C#, algoritam za kombinovanje markica na pismu03.11.2012. u 14:09 - pre 138 meseci
Evo ti nešto na brzaka:

Code:

            const int Vrednost = 278;
            var Ukupno = 0;

            for (var M4 = 0; M4 * 4 <= Vrednost; M4++)
                for (var M6 = 0; M6 * 6 <= Vrednost; M6++)
                    for (var M10 = 0; M10 * 10 <= Vrednost; M10++)
                    {
                        var Trenutno = M4 * 4 + M6 * 6 + M10 * 10;
                        if (Trenutno == Vrednost)
                        {
                            Console.WriteLine("M4 - {0:000}\t M6 - {1:000}\t M10 - {2:000}", new object[] { M4, M6, M10 });
                            Ukupno++;
                        }
                    }

            Console.WriteLine("Ukupno: " + Ukupno);
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Mala pomoc za C#, algoritam za kombinovanje markica na pismu03.11.2012. u 17:08 - pre 138 meseci
Ovde ima mesta za kresanje. Uslov M6 petlje može da bude M6 * 6 <= Vrednost - M4 * 4, a uslov M10 petlje može da bude M10 * 10 <= Vrednost - M4 * 4 - M6 * 6. Takođe, ako je početna vrednost neparna onda u startu znaš da je broj mogućih rešenja nula.

A Predragov algoritam neće naći rešenje ako je početna vrednost oblika 10 * x + 2.
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Mala pomoc za C#, algoritam za kombinovanje markica na pismu03.11.2012. u 17:14 - pre 138 meseci
Takođe, treći nivo petlje nije potreban. Potrebno je samo utvrditi da li je izraz Vrednost - M4 * 4 - M6 * 6 deljiv sa 10.
 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1343
*.mts.telekom.rs.



+311 Profil

icon Re: Mala pomoc za C#, algoritam za kombinovanje markica na pismu03.11.2012. u 19:32 - pre 138 meseci
Napisi onda optimalno resenje, rekoh da sam napisao na brzaka...
 
Odgovor na temu

Nemanja_666
Nemanja Tatic
Gradiska

Član broj: 116292
Poruke: 221
31.223.156.*



+19 Profil

icon Re: Mala pomoc za C#, algoritam za kombinovanje markica na pismu04.11.2012. u 01:47 - pre 138 meseci
Najoptimalnije bi bilo nesto kao:

Code:

#include <iostream>
#include <stdio.h>
#include <string.h>

#define MAX_SUM 9999

using namespace std;

int main() {
  int sum;
  int count[MAX_SUM];
  int coins[3] = {4, 6, 10};
  
  cin >> sum;

  memset(count, 0, sizeof(count));
  count[0] = 1;

  for (int i = 0; i <= sum; i++) {
    for (int j = 0; j < 3; j++) {
      if (i - coins[j] >= 0) {
        count[i] += count[i - coins[j]];
      }
    }
  }

  cout << count[sum];
  return 0;
}


Ovde se broje kombinacije koje se ponavljaju tipa za 10: [4, 6], [6, 4], [10]
 
Odgovor na temu

ac1bd4
Stara Pazova

Član broj: 76735
Poruke: 437
*.dynamic.isp.telekom.rs.



+35 Profil

icon Re: Mala pomoc za C#, algoritam za kombinovanje markica na pismu04.11.2012. u 12:45 - pre 138 meseci
Ovo treba u matematiku da ide, verujem da bi se tamo našao neko ko je dobar sa kombinatorikom.
 
Odgovor na temu

Qler01

Član broj: 186964
Poruke: 328
*.dynamic.isp.telekom.rs.



+4 Profil

icon Re: Mala pomoc za C#, algoritam za kombinovanje markica na pismu10.11.2012. u 10:44 - pre 138 meseci
meni treba mala pomoc oko ovog zadatka

Niz X[20] su slucajni brojevi od 1-15, a niz Y cine samo elementi koji se pojave u nizu x dva ili vise puta.


evo koda

Code (csharp):

 int brojac = 0;
            Random rnd = new Random();
            int[] mojniz = new int[20];
            for (int i = 0; i < 20; i++)
            {
                int a;
                a = rnd.Next(1, 15);
                mojniz[i] = a;
                             
                Console.WriteLine("Clan niza {0} je element niza {1}",i,a);
                do
                {
                    Console.WriteLine("Clan Y je {0}\n", a);
                    break;

                } while (a != i);
               
                               
            }


[Ovu poruku je menjao Shadowed dana 10.11.2012. u 12:40 GMT+1]
 
Odgovor na temu

Dejan Carić
Oslo, Norway

Član broj: 230976
Poruke: 232
*.dynamic.sbb.rs.

Sajt: www.dcaric.com


+26 Profil

icon Re: Mala pomoc za C#, algoritam za kombinovanje markica na pismu10.11.2012. u 12:47 - pre 138 meseci
@Qler01:
Code:
using System;
using System.Collections.Generic;
using System.Linq;

namespace Nizovi
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            var random = new Random();

            // kreiramo niz od 20 slucajnih brojeva od 1 - 15
            var nizX = new int[20];
            for (int i = 0; i < 20; i++)
            {
                nizX[i] = random.Next(1, 16);
            }

            // izracunamo broj ponavljanja svakog elementa u nizu X
            var brojPonavljanja = new Dictionary<int, int>();
            foreach (var element in nizX)
            {
                if (brojPonavljanja.ContainsKey(element))
                {
                    brojPonavljanja[element] += 1;
                }
                else
                {
                    brojPonavljanja.Add(element, 1);
                }
            }

            // napravimo niz Y koji sadrzi sve elemente
            // ciji je broj ponavljanja veci od jedan
            var nizY = (from b in brojPonavljanja
                        where b.Value > 1
                        select b.Key).Distinct().OrderBy(x => x).ToArray();

            // ispisujemo clanove oba niza
            IspisiNiz("Niz X", nizX);
            IspisiNiz("Niz Y", nizY);
        }

        private static void IspisiNiz(string naziv, IEnumerable<int> niz)
        {
            Console.Write(naziv + ": ");
            if (niz != null)
            {
                foreach (var element in niz)
                {
                    Console.Write(element + " ");
                }
            }
            Console.WriteLine();
        }
    }
}

 
Odgovor na temu

Dejan Carić
Oslo, Norway

Član broj: 230976
Poruke: 232
*.dynamic.sbb.rs.

Sajt: www.dcaric.com


+26 Profil

icon Re: Mala pomoc za C#, algoritam za kombinovanje markica na pismu17.11.2012. u 17:13 - pre 138 meseci
Evo ti još jedno rešenje bez upotrebe Dictionary-a :)
Code:
using System;
using System.Collections.Generic;
using System.Linq;

namespace Nizovi
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            var random = new Random();

            // kreiramo niz od 20 slucajnih brojeva od 1 - 15
            var nizX = new int[20];
            for (int i = 0; i < 20; i++)
            {
                nizX[i] = random.Next(1, 16);
            }

            // napravimo niz Y koji sadrzi sve elemente
            // ciji je broj ponavljanja veci od jedan
            var nizY = (from x in nizX
                        group x by x
                        into g
                        let count = g.Count()
                        where count > 1
                        orderby g.Key
                        select g.Key).ToArray();

            // ispisujemo clanove oba niza
            IspisiNiz("Niz X", nizX);
            IspisiNiz("Niz Y", nizY);
        }

        private static void IspisiNiz(string naziv, IEnumerable<int> niz)
        {
            Console.Write(naziv + ": ");
            if (niz != null)
            {
                foreach (var element in niz)
                {
                    Console.Write(element + " ");
                }
            }
            Console.WriteLine();
        }
    }
}

 
Odgovor na temu

Qler01

Član broj: 186964
Poruke: 328
*.dynamic.isp.telekom.rs.



+4 Profil

icon Re: Mala pomoc za C#, algoritam za kombinovanje markica na pismu28.11.2012. u 09:35 - pre 137 meseci
Hvala Dejane na odgovoru sada imam jos jedan zadatak koji me muci

Napraviti program za CD-teku. CD-teka raspolaže sa fondom od 100 naslova u 2 kopije. Šifre cd-ova idu od 0 do 99. Potrebno je da imate dva niza. Jedan se zove ponuda i ponuda[0] pokazuje koliko ukupno cd-ova sa šifrom 0 cd-teka raspolaže. Drugi niz je iznajmljeno i iznajmljeno[0] pokazuje koliko je cd-ova sa šifrom 0 iznajmljeno.
Kada se pokrene program pojavljuje se sledeci meni:
1) ispiši stanje - program treba da ispise stanje u obliku
sifra ponuda iznajmljeno
0 2 0
2) iznajmi cd - traži se od korisnika unos šifre cd-a i posle provere da li postoji slobodnih CD-ova poveća se broj iznajmljenih za jedan, u suprotnom se ispiše na ekranu “nema slobodnog cd-a”.
3) vrati cd - traži se od korisnika unos šifre cd-a i smanji se vrednost iznajmljeno za 1. Izvršiti proveru da li je CD uopšte bio iznajmljen pre vraćanja.
4) izlaz iz programa
Svaku od zadatih opcija realizovati funkcijom. Koristiti switch-case za realizaciju menija

Ako neko moze da mi pomogne oko resenja hvala unapred
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
*.dynamic.sbb.rs.



+373 Profil

icon Re: Mala pomoc za C#, algoritam za kombinovanje markica na pismu28.11.2012. u 18:50 - pre 137 meseci
Prvo, trebao si da otvoris novu temu jer nije vezano za originalno pitanje.

Drugo, kod prvog problema ljudi su ti pomogli (pretpostavljam) jer je zadatak logicke/kombinatorne prirode i resavanje je donekle zanimljivo. Takodje bio je u pitanju algoritam, a ne aplikacija. Ovo zadnje sto si postavio je sasvim obican skolski zadatak za koji sumnjam da ce ti neko pomoci.
Dokle god pitas konkretne stvari i pokazes da si se potrudio naci ce se neko da pomogne, ovako tesko.

[Ovu poruku je menjao plague dana 28.11.2012. u 20:59 GMT+1]
 
Odgovor na temu

[es] :: .NET :: Mala pomoc za C#, algoritam za kombinovanje markica na pismu

[ Pregleda: 4264 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.