www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

programiranje in polja

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Programska oprema
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
andrelinoge
Član
Član



Pridružen-a: Sob 13 Nov 2004 1:43
Prispevkov: 63
Aktiv.: 0.27
Kraj: vse od Murske Sobote pa do Maribora

PrispevekObjavljeno: Ned Dec 12, 2004 3:54 pm    Naslov sporočila:  programiranje in polja Odgovori s citatom

Imam majhno težavo iz programiranja in bi prosil, če mi lahko kdo, ki je bolj izkušen programer pomaga.

Težava pa je takšna......

pišem v c++ kjer sem definiral polje

char podatki [500] [50] ;

V to polje iz datoteke "fajl.txt" preberem vrstice (dosti vrstic brez presledkov napisanega besedila)

ifstream vhod("fajl.txt");
for (i=0;i<500;i++)
vhod.getline(podatki[i],50,'\n');


Če se ne motim imam zdaj polje v katerem je vsaka vrstica v datoteki shranjena v svoji vrstici polja.

Vrstice so torej razporejene v nekem vrstnem redu. In v vsaki vrstici so vmes neke številke, ki jih moram prebrati in obdelati. Ko to storim pa bi moral spremeniti vrstni red vrstic in spet obdelati. To bi moral storiti z vsemi ostalimi možnimi razporeditvami vrstic. Obdelati bi moral vse možne kombinacije.

Meni ne uspe stuhtati na kakšen način bi lahko pregledal vse možne kombinacije. Kako naj menjujem vrstice, da bom dobil vse kombinacije? Mislim, da bi bilo dobro, če bi namesto premetavanja teh vrstic raje ustvaril še eno polje, kjer bi bile le številke od 0 do 499 in bi potem tisto premetaval. To bi mi koristilo tudi pri samem obdelovanju podatkov iz vrstic.


Upam, da sem dovolj dobro opisal problem in če bo kdo imel kaj časa in idej, mi pomagal ter mogoče celo napisal program, se mu že vnaprej zahvaljujem za pomoč.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Umnik
Član
Član



Pridružen-a: Čet 16 Sep 2004 17:52
Prispevkov: 958
Aktiv.: 4.04
Kraj: Novo mesto

PrispevekObjavljeno: Ned Dec 12, 2004 9:33 pm    Naslov sporočila:   Odgovori s citatom

Če tole mal pogledam na "uč" vidim, da maš definiranih 500 vrstic in 50 stolpcev. Mislim, da te ne razumem najbolje:
Citiram:
Vrstice so torej razporejene v nekem vrstnem redu. In v vsaki vrstici so vmes neke številke, ki jih moram prebrati in obdelati. Ko to storim pa bi moral spremeniti vrstni red vrstic in spet obdelati. To bi moral storiti z vsemi ostalimi možnimi razporeditvami vrstic. Obdelati bi moral vse možne kombinacije.

URG? Vse kar mi je popolnoma jasno je:
Citiram:
Obdelati bi moral vse možne kombinacije.

To pa narediš takole:
Koda:
 
for(i=0; i<500; i++)
{
       for(j=0; j<500; j++)
       {
              //obdelava [i][j]
       }
       //obdelava [i][j]
}


S tema dvema for zankama zaobjameš oz. "preletiš" vsa polja, ki jih imaš definirane. Še vedno mi pa ni jasno ali sem odgovoril na tvoje vprašanje...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
andrelinoge
Član
Član



Pridružen-a: Sob 13 Nov 2004 1:43
Prispevkov: 63
Aktiv.: 0.27
Kraj: vse od Murske Sobote pa do Maribora

PrispevekObjavljeno: Pon Dec 13, 2004 8:43 pm    Naslov sporočila:   Odgovori s citatom

Mogoče res nisem bil ravno najbolj razumljiv...

Torej.. Če pokažem na majhnem primeru. Imam recimo v polju shranjene 3 stavke (do 50 črk)

prvi stavek
drugi stavek
tretji stavek

oz. na kratko
1
2
3

V stavkih so napisane tudi številke, ki jih preberem in z njimi nekaj izračunam. Nato pa bi moral enako izračunati še za ostale kombinacije stavkov. Torej še za...
1
3
2
in
2
1
3
in
2
3
1
in
3
1
2
in
3
2
1

Ne vem kako bi lahko menjaval te vrstice, da bi dobil vse možne kombinacije.

prosim še naprej za pomoč.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Umnik
Član
Član



Pridružen-a: Čet 16 Sep 2004 17:52
Prispevkov: 958
Aktiv.: 4.04
Kraj: Novo mesto

PrispevekObjavljeno: Tor Dec 14, 2004 3:23 pm    Naslov sporočila:   Odgovori s citatom

Uou, se mi je zdelo, da ne more biti tako enostavno!
Če te prav razumem ti iščeš vse permutacije vrstic. Samo kot zanimivost: pri 500 vrsticah je teh permutacij 500! (število veliko 1177 znakov).
Nekaj sem se igral, vendar ne najdem "univerzalne" enačbe s katerimi bi pokril vse variante. Me pa prav zanima, kje boš to uporabil?
Bom pa še poizkušal, ker je problem kar zanimiv...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
andrelinoge
Član
Član



Pridružen-a: Sob 13 Nov 2004 1:43
Prispevkov: 63
Aktiv.: 0.27
Kraj: vse od Murske Sobote pa do Maribora

PrispevekObjavljeno: Tor Dec 14, 2004 9:37 pm    Naslov sporočila:   Odgovori s citatom

Lepo lepo. Hvala za trud. Tudi mene malo skrbi, ker je tega res malo dosti... Upam, da mi ne bo treba računalnika pustiti cel teden, da bo vse skupaj poračunal Very Happy
Vendar, če ti uspe stuhtati program, ki bi to naredil... potem lahko naredim le

Dosti sreče in dobrih idej ti želim.


Lep pozdrav.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Umnik
Član
Član



Pridružen-a: Čet 16 Sep 2004 17:52
Prispevkov: 958
Aktiv.: 4.04
Kraj: Novo mesto

PrispevekObjavljeno: Sre Dec 15, 2004 1:44 am    Naslov sporočila:   Odgovori s citatom

Če si boš s tem kaj pomagal: Code Project

To je z moje strani vse. Nimam časa, da bi se še naprej ukvarjal s tem.
Oglej si tabelo bolj pri dnu strani!

Koda:
Upam, da mi ne bo treba računalnika pustiti cel teden, da bo vse skupaj poračunal :D


Algoritem na sekundo naredi 80640 permutacij. Ti pa bi jih imel, ummm... hja, nekako 500!
Preveč?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Oliver
Član
Član



Pridružen-a: Sre 27 Okt 2004 13:36
Prispevkov: 39
Aktiv.: 0.16
Kraj: Ljubljana

PrispevekObjavljeno: Čet Dec 16, 2004 5:17 pm    Naslov sporočila:   Odgovori s citatom

andrelinoge je napisal/a:
Tudi mene malo skrbi, ker je tega res malo dosti... Upam, da mi ne bo treba računalnika pustiti cel teden, da bo vse skupaj poračunal Very Happy


Cel teden? Very Happy Very Happy Very Happy

Število možnih vrstnih redov je , kot je že bilo rečeno 500! ! Petsto s klicajem pomeni 500*499*498*...*3*2*1. Kot je že tudi bilo rečeno, je to cifra z zelo veliiiiiiiiko številkami. Po mojem je to prilbližno 10 na 1133-o potenco . Za primerjavo naj povem, da je ocena števila atomov v vidnem vesolju tam okoli 10 na 80-o potenco. Torej, če bi vsak atom v vesolju vseboval toliko manjših delcev, kot jih je v vesolju in vsak tak delec še toliko delčkov in to delitev ponoviš še desetkrat in bi potem vsak tak delčiček imel toliko računalnikov, kot je atomov v vesolju in bi vsak tak računalnik lahko izračunal v sekundi toliko vrstnih redov, kot je atomov v vesolju, no, potem bi imel rezultat že kar v eni sekundi. Very Happy Very Happy
Seveda pa bi potem rabil še kar nekaj časa, da bi to vse pregledal. Wink

LP, Oliver
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Umnik
Član
Član



Pridružen-a: Čet 16 Sep 2004 17:52
Prispevkov: 958
Aktiv.: 4.04
Kraj: Novo mesto

PrispevekObjavljeno: Čet Dec 16, 2004 6:29 pm    Naslov sporočila:   Odgovori s citatom

Sem že rekel: to je število veliko 1177 znakov Shocked
Sledi, da je to kar bi ti rad naredil nemogoče.
Pojdi delat raje kaj drugega:
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Oliver
Član
Član



Pridružen-a: Sre 27 Okt 2004 13:36
Prispevkov: 39
Aktiv.: 0.16
Kraj: Ljubljana

PrispevekObjavljeno: Pet Dec 17, 2004 1:20 am    Naslov sporočila:   Odgovori s citatom

[quote="Umnik"]Sem že rekel: to je število veliko 1177 znakov Shocked

Od kod ti pa to? Število je namreč veliko 1135 znakov. Zadnjič sem napisal, da je število dolgo približno 10 na 1133-to. Narobe sem namreč po spominu prepisal izračun. Tvoja cifra se mi je pa le zdela malo prevelika, pa sem še enkrat preveril. Wink

LP, Oliver
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Umnik
Član
Član



Pridružen-a: Čet 16 Sep 2004 17:52
Prispevkov: 958
Aktiv.: 4.04
Kraj: Novo mesto

PrispevekObjavljeno: Pet Dec 17, 2004 12:58 pm    Naslov sporočila:   Odgovori s citatom

Izračun je iz Mathematice 4.1.
Veš kaj? Pri takih številkah me niti ne zanima ali je 42 ničel premalo ali pa preveč...
Je pa sedaj vprašanje, kateri ima prav? Wink
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Oliver
Član
Član



Pridružen-a: Sre 27 Okt 2004 13:36
Prispevkov: 39
Aktiv.: 0.16
Kraj: Ljubljana

PrispevekObjavljeno: Sob Dec 18, 2004 12:35 am    Naslov sporočila:   Odgovori s citatom

Umnik je napisal/a:
Izračun je iz Mathematice 4.1.
Veš kaj? Pri takih številkah me niti ne zanima ali je 42 ničel premalo ali pa preveč...
Je pa sedaj vprašanje, kateri ima prav? Wink


Tudi meni je vseeno, vsaj dokler je tako kakor pravim jaz. Laughing

Hm, morda Mathematica računa po približni Stirlingovi formuli, ampak da bi po tej dobil tako nenatančen odgovor Question .
Kakorkoli že, jaz sem potenco od 10 izračunal takole:

500! = 1*2*.........*499*500 // sedaj pa udarimo desetiški logaritem na obeh straneh
log(500!) = log(1*2*.........*499*500) // logaritem produkta je vsota logaritmov faktorjev, torej:
log(500!) = log(1) + log(2) +.......+log(499)+ log(500) // vsoto na desni izračuna calc (ali exel)
log(500!) = 1134,09 // po definiciji je x = 10 na (log(x)) zatorej:

500! = 10 na 1134,09 Wink

Da pa nebi bil v dvomu, sem po polemiki napisal še kratek turbopascal programček, ki pravi:

500! = 122013682599111006870123878542304692625357434280319284219241358838584
53731538819976054964475022032818630136164771482035841633787220781772004807852051
59329285477907571939330603772960859086270429174547882424912726344305670173270769
46106280231045264421887878946575477714986349436778103764427403382736539747138647
78784954384895955375379904232410612713269843277457155463099772027810145610811883
73709531016356324432987029563896628911658974769572087926928871281780070265174507
76841071962439039432253642260523494585012991857150124870696156814162535905669342
38130088562492468915641267756544818865065938479517753608940057452389403357984763
63944905313062323749066445048824665075946735862074637925184200459369692981022263
97195259719094521782333175693458150855233282076282002340262690789834245171200620
77146409794561161276291459512372299133401695523638509428855920187274337951730145
86357570828355780158735432768888680120399882384702151467605445407663535984174430
48012893831389688163948746965881750450692636533817505547812864000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000

Torej je Mathematica k 122 končnim ničlam dodala še 42 ničel Rolling Eyes

LP, Oliver
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Umnik
Član
Član



Pridružen-a: Čet 16 Sep 2004 17:52
Prispevkov: 958
Aktiv.: 4.04
Kraj: Novo mesto

PrispevekObjavljeno: Sob Dec 18, 2004 5:54 pm    Naslov sporočila:   Odgovori s citatom

Popolnoma prav imaš Exclamation
Očitno sem naredil napako, ko sem zajemal rezultat. Mathematica doda na koncu vrstice še znak "\", ki ga prvič ko sem tole "računal" nisem upošteval in najbrž sem zajel tudi kakšen presledek... Anxious Se opravičujem.
Ampak si pa vztrajen, moram priznat.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Programska oprema Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 4 dni


Powered by phpBB © 2001, 2005 phpBB Group