| | |
| Stránka: 1 z 1
| [ Príspevkov: 11 ] | |
Autor | Správa |
---|
Registrovaný: 18.11.10 Prihlásený: 04.12.10 Príspevky: 8 Témy: 2 | Napísal sniff: 18.11.2010 14:06 | |
|
zdravim.. mam problem ohledne vypsani prvocisel z intervalu 0-N.. program mi vypise zatim vsechna cisla,ale nevim jak vlozit podminku aby misto neprvocisla dal 0 nebo mezernik.. prikladam zdrojak
#include <iostream>
using namespace std;
int main() {
int pocet;
cout<<"kolika prvkove pole chces udelat?:\n";
cin>>pocet;
pocet=pocet +1;
int *pole=new int[pocet];// alokujeme cele pole int hodnot, operator new se stara o alokaci dostatecneho prostoru
int i=0; // a vraceni ukazatele pole na jeho zacatek
while(i<pocet){
pole[i]=i+(int) i/100;
cout <<pole[i]<<endl;
i++; }
// podminka( if (i%2||i%3)
// i=0;)
delete [] pole;
system("pause");
return 0;
}
|
|
Registrovaný: 11.01.09 Prihlásený: 20.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 18.11.2010 17:18 | |
|
Drobná inšpirácia ( v c++ je ten kód na stránke trocha zložitejší, tak ak mu nerozumieš, tak kľudne prepíš kód z pascalu, syntax pascalu by mala byť každému pochopiteľná ). Ak sa aj tak nebudeš vedieť pohnúť ďalej, tak napíš.
|
|
Registrovaný: 18.11.10 Prihlásený: 04.12.10 Príspevky: 8 Témy: 2 | Napísal autor témy sniff: 18.11.2010 20:04 | |
|
v pascalu to neresi jak bych chtel ja.... muj zdrojak je skoro hotovy, ale chybi podminka "jestli je cislo delitelne 2 a 3 a vyjde bez zbytku, tak je to prvocislo
|
|
Registrovaný: 16.02.08 Prihlásený: 08.12.10 Príspevky: 235 Témy: 13 | Napísal ado21: 18.11.2010 21:22 | |
|
Fico píše: Drobná inšpirácia ( v c++ je ten kód na stránke trocha zložitejší, tak ak mu nerozumieš, tak kľudne prepíš kód z pascalu, syntax pascalu by mala byť každému pochopiteľná ). Ak sa aj tak nebudeš vedieť pohnúť ďalej, tak napíš.
Pre ..., to je neco strasne... Uplne zbytocne std::set<int>, strasne plytvanie pamatetou, logaritmicky cas, nove alokacie... Ten kod pisal idiot... Keby mi tak niekto napisal eratostenovo sito, tak ho vyhodim ihned... Hm, mozno to bude dobre zahratie na pohovor
tu mas kod, co som napisal za 3 minuty... Nepisal som komentare, lebo nie je to nic tazke, a hold, naviac sa naucis citam zdrojakov...
Kód: /* * Erastonovo sito * * main.cpp * * Created on: Nov 18, 2010 * Author: ado21 */
#include <iostream> #include <cmath>
using namespace std;
int main(void) { cout << "Zadate cislo, po ake, vratane,sa maju vypisat prvocisla: "; int N; cin >> N; bool pole[N + 11]; for (int i = 0; i <= N ; i++) pole[i] = true; for (int i = 2; i <= (int) sqrt(N); i++) { int k = i * i; while (k <= N) { pole[k] = false; k += i; } }
for (int i = 2; i <=N; i++) if (pole[i]) cout << i << " ";
cout << endl;
return 0; }
Taka nostagia.... naposledy som ho pisal na gymku
_________________ Učet je neaktívny. |
|
Registrovaný: 18.11.10 Prihlásený: 04.12.10 Príspevky: 8 Témy: 2 | Napísal autor témy sniff: 18.11.2010 21:55 | |
|
dik za inspiraci... je to zajimave, trosku se v tom vyznam.. neslo by to vyresit moji metodou, tnz. bez bool... a dalsi otazecka proc [N + 11]??
|
|
Registrovaný: 16.02.08 Prihlásený: 08.12.10 Príspevky: 235 Témy: 13 | Napísal ado21: 18.11.2010 22:09 | |
|
sniff píše: dik za inspiraci... je to zajimave, trosku se v tom vyznam.. neslo by to vyresit moji metodou, tnz. bez bool... a dalsi otazecka proc [N + 11]??
uprimne, tvoje som nebol za 30 sekund schopny pochopit a myslim si, ze to ani nefunguje...
+ 11 preto, lebo tam trebalo aspon + 1 (vratane N a pole sa cisluje do nuly(i ked sa to obist ale zbytocne to zneprehladny kod) a nejak do mna vzdy stacili, ze pre kazdy pripad alokovat pole o kustik vacsie (ono potom +-1 nezhodi cely program).
Islo by to aj s int, ale naco... pole bool je skutocne implemtovane tak, ze jeden prvok pola ma velkost 1 bit, kdez to jeden int ma vacsinou 32 bitov. Pride mi to trochu rozdiel
K tomu je este uzitocne vediet, ze indexy nie su v poli iba tak ale daju sa aj vyuzit.
_________________ Učet je neaktívny. |
|
Registrovaný: 18.11.10 Prihlásený: 04.12.10 Príspevky: 8 Témy: 2 | Napísal autor témy sniff: 18.11.2010 22:23 | |
|
nejde mi to zkompilovat, protoze N musi byt konstantni hodnota.. nebo spis pole[N + 11]; musi byt konstantni.. prave proto to resim pomoci ukazatele
|
|
Registrovaný: 16.02.08 Prihlásený: 08.12.10 Príspevky: 235 Témy: 13 | Napísal ado21: 18.11.2010 22:34 | |
|
asi pouzivas stary alebo zvlastne nastaveny kompilator. Standarne gcc to zvlada v pohode. Ono to je iba skrateny zapis pre dynamicky alokovane pole. Technicky je nemozne vytvorit staticke pole o neznamej velkosti.
_________________ Učet je neaktívny. |
|
Registrovaný: 18.11.10 Prihlásený: 04.12.10 Príspevky: 8 Témy: 2 | Napísal autor témy sniff: 18.11.2010 22:51 | |
|
"Technicky je nemozne vytvorit staticke pole o neznamej velkosti." a tohle neni presne to co delas?bool pole[N + 11];
|
|
Registrovaný: 16.02.08 Prihlásený: 08.12.10 Príspevky: 235 Témy: 13 | Napísal ado21: 18.11.2010 23:49 | |
|
sniff píše: "Technicky je nemozne vytvorit staticke pole o neznamej velkosti." a tohle neni presne to co delas?bool pole[N + 11];
opakujem, ze je to iba skrateny zapis pre dynamicky alokovane pole.
_________________ Učet je neaktívny. |
|
Registrovaný: 18.11.10 Prihlásený: 04.12.10 Príspevky: 8 Témy: 2 | Napísal autor témy sniff: 19.11.2010 14:30 | |
|
mohl bys napsat celistvy zapis pls. ?
|
|
| Stránka: 1 z 1
| [ Príspevkov: 11 ] | |
| 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
|
|