Meniace sa kombinacie cisel – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Meniace sa kombinacie cisel – C / C++ – Fórum – Programujte.comMeniace sa kombinacie cisel – C / C++ – Fórum – Programujte.com

 

marek170
Návštěvník
20. 12. 2017   #1
-
0
-

Potreboval som spravit program alebo napisat ake funkcie (loops) mam pouzit.

1.rada 0-105

2.rada 0-104

3.rada 0-100

4.rada 0-100

5.rada 0-104

6.rada 0-100

1 2 3 4 5 6

0-0-0-0-0-0

0-0-0-0-0-105

0-0-0-0-1-0

0-0-0-0-1-105

0-0-0-0-104-0

0-0-0-0-104-105

0-0-0-1-0-0

0-0-0-1-0-1

0-0-0-1-0-105

spolu je to  1 135 680 000 000 alebo 1.135680E+12 kombinacii

........

Neviem v ktore loops funkcie mam pouzit. Switch-case,For? Kludne to moze byt int,alebo nieco ine. Vzladom na to velke cislo (E12) asi long long int ?

Nahlásit jako SPAM
IP: 185.142.51.–
KIIV
~ Moderátor
+43
God of flame
20. 12. 2017   #2
-
0
-

#1 marek17

Pokud pouzijes uint64_t, tak by se to do nej melo vejit (i kdybys pouzival na kazdy rad 7bitu, coz je zbytecne).

Kazdopadne bych s tim pracoval jako s prevodem ciselne soustavy (kdy ma temer kazdy rad jiny zaklad).

Nahlásit jako SPAM
IP: 185.163.41.–
Program vždy dělá to co naprogramujete, ne to co chcete...
peter
~ Anonymní uživatel
4014 příspěvků
20. 12. 2017   #3
-
0
-

A je nutne pouzit 4-char uint, kdyz to muzes zapsat jako pole o 6-char? Tolik toho neusetris a nemusis to pak parsovat.

Jinak
0-127  je 7 bitu
x 6 rad = 42 bitu, takze tech 64 bitu by ti melo stacit.

Jak z toho pak ziskat cisla?
(n>>0) & 0x7F = cislo 1
(n>>7) & 0x7F = cislo 2
(n>>14) & 0x7F = cislo 3
(n>>21) & 0x7F = cislo 4
(n>>28) & 0x7F = cislo 5
(n>>35) & 0x7F = cislo 6
Idealne cyklem :) Ale prijde mi to jako zbytecne si takhle komplikovat program.

Nahlásit jako SPAM
IP: 2001:718:2601:258:2953:61...–
Staon0
Návštěvník
23. 12. 2017   #4
-
0
-

#1 marek17
Když jsou ty Vánoce, tak dám i řešení (ačkoliv to normálně nedělám). Nevím úplně, jestli jsem zadání pochopil zcela správně, protože pokud poslední číslo má odpovídat 6. řadě, pak v příkladech chybně končí 105 namísto 100, kterou by měla končit. Ale hádám, že s tím už si případně poradíte.

Kombinatorické úlohy se obvykle nejsnáze řeší pomocí rekurze, takže zde je rozšiřitelné řešení jdoucí touto cestou. Pokud byste rekurzi nechtěl, musel byste vnořit 6 cyklů do sebe - takovém případě už se ale snadno nedá změnit  počet řádů.

#include <iostream>

void vytiskniRadu(
    const int pocet_radu_,
    int hodnoty_[]) {
  bool prvni_(true);
  for(int i_(0); i_ < pocet_radu_; ++i_) {
    if(prvni_)
      prvni_ = false;
    else
      std::cout << "-";
    std::cout << hodnoty_[i_];
  }
  std::cout << std::endl;
}

void generujRadu(
    const int rad_,
    const int pocet_radu_,
    const int limity_[],
    int hodnoty_[]) {
  if(rad_ == pocet_radu_) {
    vytiskniRadu(pocet_radu_, hodnoty_);
  }
  else {
    for(int i_(0); i_ <= limity_[rad_]; ++i_) {
      hodnoty_[rad_] = i_;
      generujRadu(rad_ + 1, pocet_radu_, limity_, hodnoty_);
    }
  }
}

int main(
    int argc_,
    char* argv_[]) {
  enum { RADU = 6 };
  const int limity_[RADU] = {105, 104, 100, 100, 104, 100};
  int hodnoty_[RADU];
  generujRadu(0, RADU, limity_, hodnoty_);

  return 0;
}
Nahlásit jako SPAM
IP: 94.112.135.–
marek170
Návštěvník
23. 12. 2017   #5
-
0
-

ok este si tam mal vlozit kod na ulozenie do suboru.

Robim v exceli ,ale ma limity.

http://https://mega.nz/#!y8A0TbjT!Lften9JAD1MukhJiBjriG6X3Js6cL1Ym24lwn_z1abo


v Compare.XLSX su popisane vzorce,hodnoty aut,hodnoty dielov. a ineho

v NFSw01.xlsx je skusobny vypocet

NFSW-analyser1.xlsx je starsia verzia ,kde sa zadalo auto (zoznam),vyhodilo hodnoty do Vlookup. Zadali sa nezname hodnoty z NFSTimes.... V harku Center pocitalo (prvy riadok sa dal menit , druhy a treti bol pevny)

ak sa zhodovali udaje ukazali sa v zelenom , zvysok v sedom. (islo iba o SUMY nie o kombinacie dielov)

NFSW-Test.xlsx je co si podobne len s dielmi , vzladom k tomu ,ze excel ma limity mohol som pouzit iba 2 stlpce,zvysok sa musel nastavovat.

*Najdene hodnoty zapise do suboru,zvysne hodnoty ktore sa nerovnaju vynecha.

*Ucim sa C++ ale zatial len na 2.kapitole (str.76-mistrostvi v c++) (amazon kindle PW3)

Nahlásit jako SPAM
IP: 185.142.51.–
marek170
Návštěvník
23. 12. 2017   #6
-
0
-

Vzladom k tomu chcel som tie vygenerovane cisla pouzit v exceli ale bolo by to zdlhave.

na dve rady to vychadza 10920 kombinacii. Pri 6 radach by to bolo 1.13568E+12 ,co by som musel 104mil.krat kopirovat.

Na zaciatok bude stacit ak zadaju 12 hodnoty auta,a aplikacia vypocita vsetky mozne kombinacie a ulozi do suboru.

Napr. V prvom riadku budu zadane hodnoty . napriklad:

TopSpeed:597 Acceleration:801 Handling:658 Tvalue1: 895 Avalue1: 862 Hvalue1: 609 Tvalue2: 788 Avalue2: 876 Hvalue2: 604 Tvalue3: 949 Avalue3: 878 Hvalue3: 607

0-0-0-1-0-0 Engine: stock ;Forcedinduction: stock ;Transmission: stock ;Suspension: Dawndraft improved ;Brakes: stock ;Tires: stock ( T: 0 A: 1 H: 2 ) TopSpeedSUM: 604 AccelerationSUM: 802 HandlingSUM: 656
0-0-0-1-0-1 Engine: stock ;Forcedinduction: stock ;Transmission: stock ;Suspension: Dawndraft improved ;Brakes: stock ;Tires: Dawndraft improved ( T: 0 A: 2 H: 3 ) TopSpeedSUM: 609 AccelerationSUM: 804 HandlingSUM: 655
0-0-0-1-0-2 Engine: stock ;Forcedinduction: stock ;Transmission: stock ;Suspension: Dawndraft improved ;Brakes: stock ;Tires: Dawndraft sport ( T: 1 A: 3 H: 4 ) TopSpeedSUM: 617 AccelerationSUM: 806 HandlingSUM: 654

Nahlásit jako SPAM
IP: 185.142.51.–
marek170
Návštěvník
28. 12. 2017   #7
-
0
-

#4 Staon
Vedel by si do toho programu este vlozit kod na ulozenie tych vsetkych permutacii?

Vygeneruje kombinacie a zaroven ulozi do textoveho suboru.

Nahlásit jako SPAM
IP: 185.142.51.–
KIIV
~ Moderátor
+43
God of flame
28. 12. 2017   #8
-
0
-

#7 marek17
za predpokladu, ze to bude mit v prumeru jen 20 bajtu na radek, tak to zabere jen pouhych 20.66TB

Tusim, ze to chvilku zabere...

Nahlásit jako SPAM
IP: 93.91.151.–
Program vždy dělá to co naprogramujete, ne to co chcete...
marek170
Návštěvník
28. 12. 2017   #9
-
0
-

v pohode , len tych 20TB asi tak lahko neulozim na disk .

zrejme od toho upustime. nikto nebude stahovat 20tb subor :D .

Diky za ochotu.

Nahlásit jako SPAM
IP: 185.142.51.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 68 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý