Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 8 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 06.01.07
Prihlásený: 18.12.11
Príspevky: 16
Témy: 5
Príspevok NapísalOffline : 18.12.2011 19:33

mam takyto naky programik ... problem mam v tom ze ked za x dosadim vacsie cislo ako nakych 40tis tak mi program padne hned na zaciatku .. asi nieco s alokaciou pamati :lol:
co mam spravit aby mi to zobralo aj viac

nie som programator tak poprosim budte zhovievavy, moje znalosti cecka su limitovane :)

Kód:
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
int x=40000;
int max[8]={0,10,10,10,10,7,7,7};
int end[8]={0,9,5,5,0,5,5,5};
int stav[8][x];
int riadok[x];
int index[x];
int nad1[x];
int nad2[x];
stav[1][0]=10;
stav[2][0]=10;
stav[3][0]=0;
stav[4][0]=0;
stav[5][0]=0;
stav[6][0]=7;
stav[7][0]=7;
riadok[0]=0;
index[0]=-1;
nad1[0]=0;
nad2[0]=0;

printf ("0  -  START  %d %d %d %d %d\n\n", stav[1][0], stav[2][0], stav[3][0], stav[4][0], stav[5][0], stav[6][0], stav[7][0]);

int c,prelej,in,n,m,k,j=1;

for(in=1;in<=1000000;in++){
    for(n=7;n>=1;n--){
        for(m=1;m<=7;m++){
            if (n==m){
                continue;
            }
            if ((stav[m][in-1]<max[m]) and (stav[n][in-1]!=0)){
                prelej = stav[n][in-1]+stav[m][in-1];
                stav[1][j]=stav[1][in-1];
                stav[2][j]=stav[2][in-1];
                stav[3][j]=stav[3][in-1];
                stav[4][j]=stav[4][in-1];
                stav[5][j]=stav[5][in-1];
                stav[6][j]=stav[6][in-1];
                stav[7][j]=stav[7][in-1];
                if (prelej <= max[m]){
                    stav[m][j]=prelej;
                    stav[n][j]=0;
                }
                else {
                    stav[m][j]=max[m];
                    stav[n][j]=prelej-max[m];
                }
                   for(k=1;k<j;k++){
                    if ((stav[1][j]==stav[1][k]) and (stav[2][j]==stav[2][k]) and (stav[3][j]==stav[3][k]) and (stav[4][j]==stav[4][k]) and (stav[5][j]==stav[5][k]) and (stav[6][j]==stav[6][k]) and (stav[7][j]==stav[7][k])){
                        goto end;
                    }
                }
                riadok[j]=j;
                index[j]=in-1;
                nad1[j]=n;
                nad2[j]=m;
                printf ("%d  %d   %d->%d   ", riadok[j], index[j], nad1[j], nad2[j]);
                printf ("%d %d %d %d %d %d %d\n", stav[1][j], stav[2][j], stav[3][j], stav[4][j], stav[5][j], stav[6][j], stav[7][j]);
                if ((stav[1][j]==end[1]) and (stav[2][j]==end[2]) and (stav[3][j]==end[3]) and (stav[4][j]==end[4]) and (stav[5][j]==end[5]) and (stav[6][j]==end[6]) and (stav[7][j]==end[7])){
                    goto quit;
                }
                j++;               
            }
            end:
            c++;         
        }
    }
}
quit:
     
printf ("\n----------------------------------------------\n\n");
while (j!=0){
    printf ("%d  %d   %d->%d   ", riadok[j], index[j], nad1[j], nad2[j]);
    printf ("%d %d %d %d %d\n", stav[1][j], stav[2][j], stav[3][j], stav[4][j], stav[5][j], stav[6][j], stav[7][j]);
    j=index[j];
}

    system("PAUSE");
    return EXIT_SUCCESS;
}


Offline

Skúsený užívateľ
Skúsený užívateľ
problem s pamatou? v C++

Registrovaný: 11.01.09
Prihlásený: 26.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 18.12.2011 20:05

Mne to na linuxe nepada, takze napis, aku chybu ti to hodi, pripadne ak ziadnu, spust program v debuggeri ( ak nevies ako, napis, ake prostredie pouzivas ) a povedz, na akom riadku ti to stopne. Plus daj nejake blizsie info, aky OS, co to ma robit, atd.
Neviem, ci to mas do skoly, alebo len tak, ale nie je velmi dobre ( minimalne na pohlad ), ked sa mixuje C a C++. Tym chcem naznacit, ze nieco ako printf by v C++ nemalo co robit. A navestia uz vobec nie, to patri tak do assembleru, maximalne do C. Takisto nejaky pokus o vytvorenie objektov by nezaskodil ( napr v takej jave to je nutnost ). Ale to len tak na okraj, pre buducnost, ak sa tomu hodlas venovat. Som zhovievavy :)


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 18.12.2011 20:10

To mi ani neprejde prekladom. Obávam sa, že toto nie je ani C, ani C++ :P

Každopádne, povedal by som, že 40000 je proste veľa. Buď to alokuj dynamicky, alebo tam nedávaj tak veľké polia.







_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 06.01.07
Prihlásený: 18.12.11
Príspevky: 16
Témy: 5
Príspevok Napísal autor témyOffline : 18.12.2011 20:36

ano nepada to pokial mas x=40tis ... daj si to 50tis a tak vyskusaj
mam iba nake free c++ ... myslel som si aj ze to je v tom ale skusal som to v troch roznych a vzdy to dopadlo rovnako (DEv-C++, CodeLite a este cosi, uz som to vymazal)
vyhlasuje mi to nejaku "chybu segmentacie"

a je to program na prelievanie medzi nadobami :) ... mas definovane velkost nadoby max[], pozadovany konecny stav end[] a zaciatocny stav stav[][]
postupne ti to prelieva az kym sa nedostanes k rieseniu a to ti potom este prekne vypise

// pridané po 19 minútach od posledného príspevku

alokovat dynamicky ... hmmmm :) ... vravim ze moje zalosti su limitovane
ak to takto nejde riesit tak ok ... kludne napiste a nieco vymyslim ine ... som myslel ze mozno na to bude naka jednoduca finta

povodne som to spravil v phpcku, v ktorom mi to ide trocha lepsie ... ale cim viac mate nadob tak to trva dlhsie ... toto konkretne mi pocitalo asi dve hodiny kym som sa na to vykaslal a uznal ze to skor nakodim v cecku ako mi to dorata :D ...
za tie dve hodky v php sa mi to dostalo do stavu zhruba ako v cecku za pol minutu ")


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 18.12.2011 20:42

A som si istý, že by sa to dalo zraziť až na niekoľko milisekúnd :) (40000 za pol minúty? To je moc)

Dynamické alokovanie nie je sranda. Treba byť doma v pointrovej aritmetike, čo je pre php-čkara problém.
Ak ti ale naozaj ide o veľké vstupy, tak si pekne naštuduj funkciu malloc()







_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 06.01.07
Prihlásený: 18.12.11
Príspevky: 16
Témy: 5
Príspevok Napísal autor témyOffline : 18.12.2011 20:50

40000 je len pocet zapisanych preliati ... po kazdom kontrolujem ci uz som rovnaky stav nemal predtym, resp. ci sa stav zmenil (napr. ak prelievas do plnej nadoby nic sa nezmeni)
skutocne vykonanych preliati je niekolkonasobne viac
naviac ked vypisujem kazdy riadok na obrazovku tak mozno aj to pridava na case ... ci nie? ... kazdopadne cas nie je problem .. pokial sa nebavime o hodinach a viac :)

tu sa inak natiska otazka aj hned, ci mi vobec dynamicke alokovanie pomoze kedze si pamatam vsetky mozne predchadzajuce stavy a nemozem uvolnit nic z pamate?? ... cize tych 40000 (a viac) bude mat alokovanych tak ci tak


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 18.12.2011 21:24

No dobre, daj sem presné znenie úlohy a skúsime vymyslieť niečo normálnejšie.

(a áno, printf zožerie veľa času)

// Inak, malo by stačiť, keď si tie polia zadeklaruješ pred funkciou main. Data sektor je veľký, takže veľké vstupy zoberie
(prečo ma to nenapadlo skôr...)


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 06.01.07
Prihlásený: 18.12.11
Príspevky: 16
Témy: 5
Príspevok Napísal autor témyOffline : 19.12.2011 23:41

supeeer ... dik ... presne takuto naku fintu som hladal :)
sice mi to bezalo snad aj hodinu ale nakonec sa doratal k rieseniu
stacilo na to len nieco malo nad 260tis riadkov :D
vsetkych preliati ratalo ale snad aj na milardy

kazdopadne vdaka za pomoc ... mas u mna male bezvyznamne plus :)


Odpovedať na tému [ Príspevkov: 8 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. problém s pamäťou

v Pamäte

6

528

17.02.2009 12:21

Luks Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Problém s pamäťou

v Pevné disky a radiče

13

438

10.12.2014 21:15

Mandy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. problém s virtuálnou pamäťou

v Operačné systémy Microsoft

19

1522

15.07.2009 8:01

psichac Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Problem s corsair pamatou

v Pamäte

6

578

14.03.2011 19:47

tomando1 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Problém s pamätou po sťahovaní

v Ostatné programy

1

388

13.08.2010 22:53

jaro100 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. problem s pamatou v apachi

v Ostatné

0

440

26.10.2009 15:23

colorado Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. HP ProBook 450 problém s pamäťou

v Notebooky a netbooky

10

609

09.02.2014 20:01

SKRiPT Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ASUS EAH3870X2 problem s pamatou...pls help

v ATI/AMD grafické karty

5

628

15.12.2008 5:06

Jaro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Problém s pamäťou ram / biosom / doskou - MSI Z170 Tomahawk

v Intel čipové sady

9

763

27.03.2017 20:11

Actain Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. USB - problém s pamäťou, údajne je plné a pri tom je skoro prázdne

v Ostatné zariadenia

3

692

15.10.2015 16:33

4040 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C/C++ problém so súbormi a hodnotami

v Assembler, C, C++, Pascal, Java

2

311

09.12.2012 10:43

nBXXL Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C&C: Rengade-problem

v Počítačové hry

0

528

21.04.2009 15:39

GothicMan Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C&C Generals problem

v Počítačové hry

2

645

16.01.2011 12:35

Luks Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Problem C&C Generals

v Počítačové hry

20

1236

12.10.2007 21:09

Matokoko Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Problem s teplotou? Speedfan Core- 4°C a Core 96°C

v AMD - Advanced Micro Devices

18

1220

08.05.2011 15:57

slavix Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pomoc s pamatou

v Pamäte

1

247

07.03.2013 19:05

jtbs Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra