z-trening vise ne radi zna ko neku slicnu stranicu?
Programiranje u C++-u - pitanja i odgovori
- poruka: 7.285
- |
- čitano: 1.702.738
- |
- moderatori:
Lazarus Long, XXX-Man, vincimus
- +/- sve poruke
- ravni prikaz
- starije poruke gore
z-trening vise ne radi zna ko neku slicnu stranicu?
Sphere online judge (SPOJ.PL), Timus online judge...
Trebao bih par savjeta u vezi jednog programa.
Program bi trebao ispisivati broj prostih brojeva u određenom intervalu.
Ja sam probao napraviti program, ali uvijek mi izbacuje krivi rezultat (recimo kada zadam 1 10, umjesto 4 izbaci 12). U čemu je problem?
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int p, k, i , j;
int u = 0;
cin >> p;
cin >> k;
for ( i = p; i <= k; i++)
for ( j = 2; j <= k / 2 ; j++) {
if ( i % j == 0) {
u += 1;
}}}
cout << u << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
P je početak intervala, a k kraj.
Hvala
Trebao bih par savjeta u vezi jednog programa.
Program bi trebao ispisivati broj prostih brojeva u određenom intervalu.
Ja sam probao napraviti program, ali uvijek mi izbacuje krivi rezultat (recimo kada zadam 1 10, umjesto 4 izbaci 12). U čemu je problem?
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int p, k, i , j;
int u = 0;
cin >> p;
cin >> k;
for ( i = p; i <= k; i++)
for ( j = 2; j <= k / 2 ; j++) {
if ( i % j == 0) {
u += 1;
}}}
cout << u << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
P je početak intervala, a k kraj.
Hvala
Evo sam ti oznacio problem ...
Ma program je kriv poprilicno.
U biti toliko je kriv da je tesko objasniti gdje da krenem. :)
Dakle moras se zapitati kada je broj x prost?
Kada za nijedan broj j iz intervala [2,x/2] NE vrijedi x%j==0
@Kkristijan, nema ti potrebe za ==1, ==2, ==3 pretpostavljam da mislis da nesto optimiziras, ali stvarno nema potrebe za tim. :)
Ako si bas zainteresiran, onda je bolje ici do korijen od x a ne do x/2.
I kada vracas nesto iz bool funckije bolje(za citati, kompu je isto) true ili false.
Ako si bas zainteresiran, onda je bolje ici do korijen od x a ne do x/2.
I kada vracas nesto iz bool funckije bolje(za citati, kompu je isto) true ili false.
Jos bolje, moze preskociti sve parne brojeve osim 2, jer svaki n koji je paran djeljiv je sigurno s tri razlicita djelitelja, 1, 2 i n.
ZADATAK: Napišite program koji će unositi brojeve sve dok se ne unese broj čiji je kvadrat simetričan broj. Program treba ispisivati koliko je parnih brojeva uneseno.
Unos: 10 5 7 11 Ispis: 1
Hvala unaprijed svima.
zasto nebi i sam provo to je jednostavan zadatak
dobar dan pozdravljam sve clanove foruma, naime ja sam novi medu vama i zainteresiralo me programiranje.
naime dobija sam na faksu jedan zadatak za isprogramirat ali kao sto rekoh jos sam pocetnik i donekle znam samo osnove.
treba mi vasa pomoc oko tog zadatka a zadatak glasi ovako:
Napisite program koji od korisnika trazi da unese znak i kad ga ovaj unese ispisuje ASCII kod unesenog znaka. Program se odvija u petlji sve dok korisnik ne unese znak 'q'.
eto to je zadatak nadam se da ce mi ga netko uspit rjesit tocno, hvala unaprid!
Evo:
#include <iostream>
using namespace std;
int main()
{
char a;
do
{
cin>>a;
cout<<static_cast<int>(a)<<endl;
}
while(a!='q');
return 0;
}
Ma program je kriv poprilicno.
U biti toliko je kriv da je tesko objasniti gdje da krenem. :)
Dakle moras se zapitati kada je broj x prost?
Kada za nijedan broj j iz intervala [2,x/2] NE vrijedi x%j==0
@Kkristijan, nema ti potrebe za ==1, ==2, ==3 pretpostavljam da mislis da nesto optimiziras, ali stvarno nema potrebe za tim. :)
Ako si bas zainteresiran, onda je bolje ici do korijen od x a ne do x/2.
I kada vracas nesto iz bool funckije bolje(za citati, kompu je isto) true ili false.
ma znam,inace se sa tim sistemom moze ici do korjena i preskakati parne ( i+= 2),a jos bi se ispred isplatilo provjeravat uvjet da je svaki prosti veci od 3 oblika 6k +/- 1
Ne, nećemo ti ga riješiti mi - nego ćeš ga riješiti ti:
dakle:
uneseš neki znak kao char varijablu - a ispišeš njegov ascii kod - dakle ispišeš ga bez jednostrukih navodnika
i sve to u petlji while koja se izvodi uz uvjet (znak =! 'q')
Pogledaj malo ascii tablicu da bi shvatio bit zadatka:
svaka ascii vrijednost ima svoju dekadsku , hexa, oktalnu i char vrijednost
kAD želiš ispisati malo slovo a - onda ga ispišeš ovako : cout<< 'a';
kad želiš ispisati dekadsku vrijednost ascii znaka a onda ga ispisuješ ovako : cout<< a; (bez jednostrukih navodnika) - a na konzoli se ispisuje broj 97
A sad na posao - gdje zapneš - netko će uskočiti
nemoj biti gotovan - oni najprije dobiju dosta pomoći - ali brzo ih se svi zasite (i oni koji najviše žele pomoći).
program radi savrseno, zahvaljujem na pomoci!
Ne, nećemo ti ga riješiti mi - nego ćeš ga riješiti ti:
dakle:
uneseš neki znak kao char varijablu - a ispišeš njegov ascii kod - dakle ispišeš ga bez jednostrukih navodnika
i sve to u petlji while koja se izvodi uz uvjet (znak =! 'q')
Pogledaj malo ascii tablicu da bi shvatio bit zadatka:
svaka ascii vrijednost ima svoju dekadsku , hexa, oktalnu i char vrijednost
kAD želiš ispisati malo slovo a - onda ga ispišeš ovako : cout<< 'a';
kad želiš ispisati dekadsku vrijednost ascii znaka a onda ga ispisuješ ovako : cout<< a; (bez jednostrukih navodnika) - a na konzoli se ispisuje broj 97
A sad na posao - gdje zapneš - netko će uskočiti
nemoj biti gotovan - oni najprije dobiju dosta pomoći - ali brzo ih se svi zasite (i oni koji najviše žele pomoći).
da u pravu si, ali san dobija ovaj zadatak na faksu kojeg nisan ima pojma rjesit pa me zanimalo koje je rjesenje. a ja da ga iden rjesavat sam ne bi ga rjesija nikad..
skinija san tutorijale s interneta i sad polako ucin nadan se da cu uspit nesto naucit bar neke osnove u dogledno vrime.
Bi , brzo bi ga riješio sam -
uneseš char varjablu preko konzole
na char varijabu primjeniš cast operator int
vrtiš while petlju dok je znak različit od q
moraš naučiti baratati sa char znakovima - inače će se profa sutra praviti pametan kad vas jedno 50 posto sruši na nekom jednostavnom baratanju sa char znakovima
e zato odmah nauči da je ovaj izraz:
int broj = 65 - A jednak 0
vidi zašto je to tako kako jest - da bi znao napraviti nešto - moraš znati što radiš
sta je to cast operator ako mozes pojasnit?
sta je to cast operator ako mozes pojasnit?
sta je to cast operator ako mozes pojasnit?
Sa tim operatorom vrijednost jednog tipa varijable prebacuješ u vrijednost drugog tipa.
npr:
int broj1= 5;
int broj2 = 3;
double kvocijent;
double kvocijent = (double)broj1 / broj2;
uoči ovaj cast operator double u zagradama ispred varijable broj1 - s njim smo varijablu int broj1 pretvorili u double tip varijable
to nismo radili tek tako - da bi skužio ispiši ovaj program sa i bez tog cast operatora - vidjet ćeš u čemu je razlika
A ovaj kolega ti je gore dao c++ verziju cast operatora - static_cast<int>(a) - a mogao je napisati i staru c verziju (int)a
obje verzije u c++ jeziku prolaze.
Čak i na ovom malom zadatku od tebe se traži da znaš tri stvari:
- tipove varijabli
- castanje varijabli
- while petlju
Zato nije baš jednostavno kako izgleda - pročitaj i teoriju - a onda vježbaj.
moram krenit od osnova nema smisla ovako od sredine pa prema kraju.Zahvaljujem na objasnjenju
sta je to cast operator ako mozes pojasnit?
Sa tim operatorom jedan tip varijable prebacuješ u drugi tip
Bolje reći "s operatorom za type-castingvrijednost jednog tipa konvertira se u vrijednost drugog tipa". Zašto ne "varijable"? Zato jer to može biti i tip nekog izraza, čija se vrijednost poslije dodjeljuje nekoj varijabli. Zašto "vrijednost", a ne "tip"? Zato jer ne mijenjaš tip varijable ili nečega drugog, nego mijenjaš tip vrijednosti koju varijabla sadrži.
moram krenit od osnova nema smisla ovako od sredine pa prema kraju.Zahvaljujem na objasnjenju
Samo naprijed - očito moraš teoriju apslovirati sam
profe se neće očito baš oznojiti - valjda su vam dali neku literaturu po kojoj ćete raditi
Ovo ti je referentna stranica za C++:
http://www.cplusplus.com/doc/tutorial/
Imaš i tutorijale, a imaš opisanu i svaku naredbu i funkciju uz jednostavne primjere
da, imamo bas loseg profesora,mislin nije los nije da ne zna ali ne zna to nama objasnit dobro u tom je najveci problem.
da, imamo bas loseg profesora,mislin nije los nije da ne zna ali ne zna to nama objasnit dobro u tom je najveci problem.
Sto ti uopce radis na faksu, ti kao da ocekujes da ce profesori umjesto tebe uciti ?
Ako ne kuzis uzmi si malo vremena i savladaj pogotovo ako se radi o ovakvim tricarijama
koje se mogu izguglati za 10 min.
Da , @mbaksa je u pravu,
sa cast operatorom konvertiramo vrijednost jednog tipa varijable u vrijednost drugog tipa, a ne konvertiramo varijablu
int broj1 = 5;
int broj2 = 3;
double kvocijent;
kvocijent = (double)broj1 / broj2; // dobijamo vrijednost varijable kvocijent 1.66667
kvocijent = broj1 / broj2; // dobijamo vrijednost varijable kvocijent 1
Očito je da je sa cast operatorom konvertirana vrijednost varijable broj1 iz int u double tip u prvom izrazu
Da je konvertirana varijabla broj1 onda bi i u drugom izrazu vrijednost varijable kvocijent bila kao i u prvom izrazu - ali to nije slučaj
* ispravljeno u originalnom postu.
reka san da ne znan ama bas nista i da cu sam pokusat priko tutorijala naucit...
a tebi ako je danas los dan ili si se diga na na livu nogu lici svoje frustracije negdi drugo...pravi si drnde,nisi moga izabrat bolji nick.
reka san da ne znan ama bas nista i da cu sam pokusat priko tutorijala naucit...
a tebi ako je danas los dan ili si se diga na na livu nogu lici svoje frustracije negdi drugo...pravi si drnde,nisi moga izabrat bolji nick.
ispravi me ako griješim - ali u moje vrijeme su profesori davali popis literature potrebne za učenje
što to više ne čine?
(iskreno - malo mi je čudno da student priprema ispit isključivo preko tutorijala sa net-a - pitaj ipak profu koju literaturu preporučuje.)
reka san da ne znan ama bas nista i da cu sam pokusat priko tutorijala naucit...
a tebi ako je danas los dan ili si se diga na na livu nogu lici svoje frustracije negdi drugo...pravi si drnde,nisi moga izabrat bolji nick.
i dobro si ga reka... a jesan ispa nepristojan prije, da ti za ispriku izguglam neki video tutorijal ?
Moze malo bolje pojasnjenje oko ovog konkretnog primjera:
#include <iostream>
#include <ostream>
struct demo
{
demo() : x_(0) { std::cout << "default constructor\n"; }
demo(int x) : x_(x) { std::cout << "constructor(" << x << ")\n"; }
demo(demo const& that)
: x_(that.x_)
{
std::cout << "copy constructor(" << x_ << ")\n";
}
int x_;
};
demo addone(demo d)
{
++d.x_;
return d;
}
int main()
{
demo d1;
demo d2(d1);
demo d3(42);
demo d4(addone(d3));
}
Sporan mi d4. Naime, kod mene kad pokrenem ovaj kod ispise sljedece: default constructor, copy constructor(0), constructor(42), copy constructor(42), copy constructor(43). Sve mi je jasno osim zadnja dva. Naime, ja sam ocekivao da ce ispisati samo copy constructor(43). Zanima me, zasto je ispisao i copy constructor(42)? Ja pretpostavljam da je to zato sto prvi put zove konstruktor kopije kod poziva funkcije addone, a drugi put zove konstruktor kopije kad s return vrijednoscu f-je addone inicijalizira d4? Jel sam na tragu?