Programiranje u C++-u - pitanja i odgovori
emerik
pon 20.6.2011 16:19
Jedno pitanje.Kako u C++ u inicijalizaciji zadati d avarijabla npr. može koristiti integere od 0 do 128 ,a ne u rasponu -32768 do +32768.U Pascalu znam d ase može ,pa se vjerojatno može i tu.Hvala.
BassMan
pon 20.6.2011 17:06
Nemaš u c/c++ byte tip podatka. Najbliže onome što hoćeš je unsigned char koji može poprimiti vrijednosti od 0 - 255. Manje od toga ne ide.
emerik
pon 20.6.2011 17:34
A ako su mi npr. potrebni brojevi od 1 do 5?Kod npr. računanja prosjeka.
rustweaver
pon 20.6.2011 17:38
Nemaš u c/c++ byte tip podatka. Najbliže onome što hoćeš je unsigned char koji može poprimiti vrijednosti od 0 - 255. Manje od toga ne ide.
typedef unsigned char BYTE;
eto sad imas :D
char jest jedan bajt u memoriji. Posve je nebitno zove li se taj tip podatka char ili byte ili komadic :D
Onda mozes koristiti long, int, short, char ili float (vjerojatno zelis float jer prosjek nije cijeli broj) ili double (nepotrebno, ali mozes).
BassMan
pon 20.6.2011 17:42
Nemoj brkat stvari. Ja sam ti ovdje spomenuo zauzeće memorije. unsigned char je tip podatka koji zauzima 1 byte u memoriji i zbog toga u njega može stati spomenuti raspon (unsigned je bez negativnih brojeva). Najbolje ti je onda, budući da počinješ sa c++ koristiti standardne tipove a to su
int - cijeli broj
float - decimalni broj
char - znak
emerik
pon 20.6.2011 17:42
Znam da koristim float kao prosjek,ali kako napraviti da mi varijabla koju upisujem može imati vrijednosti samo od 1 do 5?
BassMan
pon 20.6.2011 17:46
int unos;
do
{
cout << "Unesi broj" << endl;
cin >> unos;
}while (unos <1 || unos > 5);
rustweaver
pon 20.6.2011 17:48
Nikako, najmanji broj na racunalu je 8 bitni broj (1 bajt iliti char), i on ima raspon 0-255 ako je unsigned ili -128-127 ako je signed. Ti u programu sâm trebas provjeravati je li unos unutar dozvoljenog raspona...
cin >> ocjena;
if (ocjena < 1 || ocjena > 5)
cout << "Pogresna ocjena" << endl;
emerik
uto 21.6.2011 16:59
Kakvo je to Parallel Programming za Visual Studio?
captain_soap_McTawish
uto 21.6.2011 17:06
Zato ti je najbolje koristiti pobrojene tipove(na dnu stranice):
npr:
enum ocjene(nedovoljan=1,dovoljan,dobar,vrlo_dobar, odlican);
ocjene mojaocjena=odlican;
ocjene njegovaocjena=4;
rustweaver
uto 21.6.2011 18:19
Enum mu nece pomoci kod pogresnog unosa korisnika, on sluzi samo da sprijeci programera pri koristenju nevazecih vrijednosti.
emerik
čet 23.6.2011 15:07
Može netko reći zašto ne radi program?
//Program upisuje niz,te u drugi niz prebacuje proste brojeve i zatim ih ispisuje#include<iostream>using namespace std;int main() { int x,y [20]; bool prost; int j,i,k,n; cout<<"Upisi n: "; cin>>n; cout<<"Upisi clanove niza "; for(i=1;i==n;i++) cin>>x[i]; k=0; for(i=1;i==n;i++) { prost == true; for(j=2;i<(x[i]-1),j++) if (x[i]%j == 0) prost == false; } if (prost == true) { k++; y[k] = x[i]; } cout<<"Prosti brojevi su :"; for(i=1;i==k;i++) cout<<y[i]; system("pause"); return 0;}
KKristijan
čet 23.6.2011 15:16
Može netko reći zašto ne radi program?
//Program upisuje niz,te u drugi niz prebacuje proste brojeve i zatim ih ispisuje#include<iostream>using namespace std;int main() { int x,y [20]; bool prost; int j,i,k,n; cout<<"Upisi n: "; cin>>n; cout<<"Upisi clanove niza "; for(i=1;i==n;i++) cin>>x[i]; k=0; for(i=1;i==n;i++) { prost == true; for(j=2;i<(x[i]-1),j++) if (x[i]%j == 0) prost == false; } // OVU VITIČASTU .... if (prost == true) { k++; y[k] = x[i]; }// PREBACI TU cout<<"Prosti brojevi su :"; for(i=1;i==k;i++) cout<<y[i]; system("pause"); return 0;}
ovaj dio di trpas proste u drugi niz treba biti pod petljom...
i dovoljno ti je da vrtis petlju do korjena iz x[i],matematicki se da dokazati da ako broj nema djeljitelja do svog korjena,da je prost. petlji
EDIT: jos ti je u drugoj for petlji kod provjere prostosti umjesto 'j' , 'i' ( kod logičkog izraza,i < (x[i]-1) )
rustweaver
čet 23.6.2011 15:23
Može netko reći zašto ne radi program?
cout<<"Upisi clanove niza "; for(i=1;i==n;i++)
Polja uvijek pocinju sa indexom nula, a ne 1
I kakav ti je to uvjet? Dok je 'I' jednak 'N'? To nema smisla, zelis valjda dok je 'I' manji ili jednak 'N', ili samo manji od 'N' ovisno kako brojis...
for(i=1;i==n;i++) { prost == true;
Jos gresaka iz prethodnog ulomka. Ovo zeleno oznaceno treba ici "prost = true;" ide samo jedan znak jednakosti kod dodjeljivanja vrijednosti varijabli. Dva znaka jednakosti idu kod provjere vrijednosti.
for(i=1;i==k;i++)
I opet malo gresaka pred kraj. I to su samo one greske koje su mi na prvi pogled upale u oci, a sada jos treba detaljnije pogledati.
Btw. kod ti je cudno formatiran, posebno me uznemiruje nacin na koji stavljas viticaste zagrade.
emerik
čet 23.6.2011 15:29
Hvala na primjedbama,tek sam počeo u C++,prije sam radio u Pascalu pa se trebam priviknuti.
KKristijan
čet 23.6.2011 15:33
koj sam ja debil =o,od svega nisam primjetio to i == n xD
rustweaver
čet 23.6.2011 15:35
Takoder varijabla x ti nije deklarirana kao polje, nego kao obican integer. Kompajler lijepo izbaci gresku kada pokusas pristupiti clanovima varijable x preko indexa.
znaci treba ici
int x[20], y[20];
emerik
čet 23.6.2011 15:47
OK,nije mi jasno zašto u for petlji mora pisati <=n.
KKristijan
čet 23.6.2011 15:56
OK,nije mi jasno zašto u for petlji mora pisati <=n.
Zato jer se petlja vrti dok je taj logički izraz istinit,a ako pise i == n,nikad nece ni pocet.
Intelovac123
čet 23.6.2011 15:58
Imam par eknjiga vezano za c++ pa ako neko hoce neka se javi na pp!
KKristijan
čet 23.6.2011 16:01
Imam par eknjiga vezano za c++ pa ako neko hoce neka se javi na pp!
Imaš neku s algoritmima :D?
rustweaver
čet 23.6.2011 16:03
@emerrik
ne <=n nego <n
kada deklariras polje sa 5 clanova, prvi clan ti ima index 0, a poslijednji 4. Ako ces vrsiti iteraciju po clanovima, pocetnu vrijednost brojaca postavljas na 0, a kranja vrijednost mora biti za 1 manja od ukupnog broja clanova (zato sto se pocinje brojati od nule).
dakle za:
int x[5];
imas clanove
x[0], x[1], x[2], x[3], x[4]
stoga je pravilna petlja:
for (int n=0; n<5; n++)
x[n]=nesto...;
ako kao uvjet na gornju petlju stavis <=n onda ce ti petlja ici od nultog elementa pa sve do petog x[5] (koji nije definiran) i time ces izletiti iz polja.
Sto se tice same for petlje, ovako idu argumenti:
for (pocetna vrijednost brojaca; uvjet; uvecanje ili umanjenje brojaca)
for petlja ce se ponavljati tako dugo dok je uvjet zadovoljen, ako stavis N==X onda ce ti se petlja ponavljati samo ako je N jednak X, ako stavis N < X onda ti se petlja ponavlja tako dugo dok je N manji od X.
captain_soap_McTawish
čet 23.6.2011 17:26
Imam ovakav kod:
#include <cassert>
#include <iostream>
using namespace std;
class Tablica
{
private:
int BrEl;
int *elementi;
public:
Tablica();
Tablica(int BrEle);
void UmetniElement(int poz);
void IzbrisiElement(int poz);
Tablica* SortirajTablicu();
};
Tablica::Tablica():BrEl(10),elementi(new int[BrEl])
{
assert(elementi!=0);
}
Tablica::Tablica(int BrEle):BrEl(BrEle),elementi(new int[BrEle])
{
assert(elementi!=0);
}
int main()
{
Tablica lista;
return 0;
}
CalvinRi
čet 23.6.2011 17:48
Ako u funkciji UmetniElement trebas BrEl, slobodno pristupas njemu unutar funkcije, jer je ta funkcija dio klase. Uopce ti ne treba default argument funkcije.
Osim toga, u klasi ti nedostaje ti destruktor u kojem brises zauzetu memoriju
mate960
čet 23.6.2011 18:25
Evo a ne otvaram novu temu, zanima me ako mi tko moze pomoci i naci neku tutorial knjigu za c++ novijeg izdanja, po mogucnosti na hrv a nije ni eng problem, jer vecina onih primjera i zadataka iz starijih knjiga ne radi u novom DEV C++.
Inace, pocetnik sam sto se tice programiranja i bio bih vam zahvalan ako mi pomognete.
KKristijan
čet 23.6.2011 18:27
Evo a ne otvaram novu temu, zanima me ako mi tko moze pomoci i naci neku tutorial knjigu za c++ novijeg izdanja, po mogucnosti na hrv a nije ni eng problem, jer vecina onih primjera i zadataka iz starijih knjiga ne radi u novom DEV C++.
Inace, pocetnik sam sto se tice programiranja i bio bih vam zahvalan ako mi pomognete.
Kako mislis ne rade u devu? Koliko stare knjige?
Moj prijedlog ti je Demifisticirani c++ od Šribara i Motike, trenutno je i ja čitam :)
mate960
čet 23.6.2011 18:31
Evo a ne otvaram novu temu, zanima me ako mi tko moze pomoci i naci neku tutorial knjigu za c++ novijeg izdanja, po mogucnosti na hrv a nije ni eng problem, jer vecina onih primjera i zadataka iz starijih knjiga ne radi u novom DEV C++.
Inace, pocetnik sam sto se tice programiranja i bio bih vam zahvalan ako mi pomognete.
Kako mislis ne rade u devu? Koliko stare knjige?
Moj prijedlog ti je Demifisticirani c++ od Šribara i Motike, trenutno je i ja čitam :)
Prosinac 2000 
EDIT: Moze link od te knjige?
Luuka
čet 23.6.2011 18:34
NOVOM Devc++-u? Pa to je compiler koji se godinama ne razvija. Prije 5god kad sam ja krenuo s njim je bila ova verzija koja je i sad zadnja, a i onda je bila stara.
mate960
čet 23.6.2011 18:36
NOVOM Devc++-u? Pa to je compiler koji se godinama ne razvija. Prije 5god kad sam ja krenuo s njim je bila ova verzija koja je i sad zadnja, a i onda je bila stara.
Nemam ja pojma o tim verzijama, samo znam da mi za pola onih cuda izbacuje error pri kompajliranju.
evo zgodnih zadataka za početnike:
http://www.gimnazijabihac.edu.ba/doc/info2/