Programiranje u C++-u - pitanja i odgovori
- poruka: 7.285
- |
- čitano: 1.602.472
- |
- moderatori:
Lazarus Long, XXX-Man, vincimus
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.
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.
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).
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
int unos;
do
{
cout << "Unesi broj" << endl;
cin >> unos;
}while (unos <1 || unos > 5);
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;
Kakvo je to Parallel Programming za Visual Studio?
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;
Enum mu nece pomoci kod pogresnog unosa korisnika, on sluzi samo da sprijeci programera pri koristenju nevazecih vrijednosti.
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;}
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) )
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.
Hvala na primjedbama,tek sam počeo u C++,prije sam radio u Pascalu pa se trebam priviknuti.
koj sam ja debil =o,od svega nisam primjetio to i == n xD
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];
OK,nije mi jasno zašto u for petlji mora pisati <=n.
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.
Imam par eknjiga vezano za c++ pa ako neko hoce neka se javi na pp!
Imam par eknjiga vezano za c++ pa ako neko hoce neka se javi na pp!
Imaš neku s algoritmima :D?
@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.
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;
}
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
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.
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 :)
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?
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.
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.