Napravio si .c datoteku umjesto .cpp datoteku i zato se compiler buni jer u C jeziku nema iostream.
Programiranje u C++-u - pitanja i odgovori
- poruka: 7.285
- |
- čitano: 1.702.129
- |
- moderatori:
Lazarus Long, XXX-Man, vincimus
- +/- sve poruke
- ravni prikaz
- starije poruke gore
Može li mi neko malo detaljnije objasniti "sizeof"? Znam da je to broj koji zauzima npr nekoliko podataka tipa int (tako nešto) ali mi treba malo detaljnija definicija ako neko zna.
Može li mi neko malo detaljnije objasniti "sizeof"? Znam da je to broj koji zauzima npr nekoliko podataka tipa int (tako nešto) ali mi treba malo detaljnija definicija ako neko zna.
Dakle, imam mali problem vezan uz programčić. Radim enkripcijsku stupčanom transpozicijom i u jednoj djelu mi if jednostavno ne radi. Već 2 sata sjedim za računalom da napišem ovo govnašce, ali nikako da proradi bez problema.
U ovoj petlji na kraju koda brojac mi uvijek dođe do 4, ali dalje ga if ne prepoznaje. Dakle, kad for petlja dođe do broja 4, trebalo bi dalje ići u if , ali ne ide.
Inače enkripcija radi, samo što ne ide dalje od 3. stupca.
Pa evo, ako neko zna u čemu je problem, bio bih jako zahvalan.
#include <string>
#include <fstream>
using namespace std;
int main()
{
int a;
char brojac=49;
string sifra, plaintext, sifrat;
ifstream dat1 ("sifra.txt");
if (dat1.is_open())
{
getline (dat1, sifra);
dat1.close();
}
a=sifra.size();
ifstream dat2 ("plain.txt");
if (dat2.is_open())
{
getline(dat2, plaintext);
dat2.close();
}
while(plaintext.size()%a!=0)
plaintext.append(".");
ofstream dat3("sifrat.txt");
for (int i=0; i<10; i++)
{
if (sifra[i]==brojac)
{
while(i<plaintext.size())
{
dat3<<plaintext[i];
i+=a;
}
brojac++;
i=0;
}
}
dat3.close();
return 0;
}
EDIT: Naravno, čim sam napisao ovaj post mi je došlo u glavu. i bi na kraju if petlje trebalo vratiti na -1 jer će tek onda u sljedećem krugu biti 0 i neće preskočiti prvi broj. :)
Nisam baš iskusan sa C++, ali ako ima if i treba biti i else. Umjesto for probaj ubaciti else.
Nisam baš iskusan sa C++, ali ako ima if i treba biti i else. Umjesto for probaj ubaciti else.
nemora
Pozdrav društvo,
počeo sam raditi u C++-u pa rješavam random zadatke, naišao sam na ovaj zadatak i nikako ne mogu dobiti točan ispis.
Zadatak galasi ovako:
Učitavati brojeve sve dok se ne učita 0. Program ispisuje broj koji je najmanji po apsolutnoj vrijednosti(osim nule). Naprimjer, ako korisnik unese brojeve 3, -7, -1, 5, 0, program ispisuje -1. U programu nemojte koristiti "apsolutnu vrijednost", nego je implementirajte s pomoću IF-naredbe.
Pokušao sam ga riješti, ali nikako da dobijem dobar ispis, ispiše mi samo broj 3, umjesto -1. Ne znam gdje je pogreška sve sam već probao, ali ne želim odustati od njega jer me kopka cijelo vrijeme.
Hvala Vam na pomoći :)
#include<iostream>
using namespace std;
int main() {
int n, min;
cin >> n;
if (n > 0) min = n;
if ((-n) < 0)min = n;
while (n!=0)
{
if ((n > 0 && n < min)|(-n<0&&-n<min)) {
min = n;
}
cin >> n;
}
cout<<min;
system("PAUSE");
return 0;
}
Ovako, kad napises program, a on radi nesto krivo, u glavi si vrti kod i izvrsavaj liniju po liniju i gledaj kakva ce biti vrijednost koje varijable u kojem trenutku. Ili pisi na papir, kako ti je lakse.
Evo, npr., sto se dogada kad korisnik upise npr., 3? Prvi if -> da li je 3 vece 0 nula? Je, dakle min = n. Drugi if -> da li je -3 manje od nula? Je, dakle min = n. Ovo je vec alarm za nekakvi problem. Nekako pretpostavljam da se oba if-a ne bi smjela izvrsiti. Idemo dalje, ulazimo u while zato sto 3 != 0. Uvjet, prva zagrada -> da li je 3 > 0? Jest, a da li je 3 < 3? To nije, dakle prva zagrada je 0 jer 1 && 0 je 0. Druga zagrada -> da li je -3 < 0? Jest, a da li je -3 < 3? I to je tocno, dakle druga zagrada je 1 i sve ukupno obje zagrade daju nista. Zasto? Zato sto si stavio | sto je znak za bitwise operaciju OR, a ne ovaj ILI koji ti trazis. Treba ici ||.
Ok, pretpostavimo da pise ||. Sveukupno zagrade ce nam dati true, dakle izvrsit ce se min = n. Unosimo novi broj, -7. Prva zagrada u if-u, da li je -7 > 0? Nije, dalje ne trebamo niti gledati, prva zagrada ce biti 0. Druga zagrada u if-u, da li je 7 < 0 (7 jer minus i minus daju plus -(-7) = 7), nije ni to istina, dakle i druga ce zagrada biti 0, a zajedno bi nam dale 0, pa se min = n nece niti izvrsiti. Da li vidis sada problem? Da li vidis da za bilo koji negativni broj obje zagrade u if-u ce biti uvijek false i if se nikad nece izvrsiti za negativni broj?
EDIT: Takoder, kad imas neki problem, rijesi ga tako da ga podijelis u puno malih problema koje je onda lakse rijesiti nego cijeli veliki odjednom. Kod tebe primjer, moras od niza brojeva uzeti njihove apsolutne vrijednosti i naci najmanju. Taj problem mozes podjeliti u dva manja. Prvi je uzimanje apsolutne vrijednosti. To ti je jedan if koji provjerava da li je n < 0, ako jest pretvori ga u pozitivan broj (sjeti se, minus i minus daju plus). Sad kad imas pozitivan broj, drugi problem je naci najmanju vrijednost, dakle usporedivanje tog broja s najmanjom vrijednosti (min varijabla). Ako je manji, onda je taj broj sad min, a ako nije, idemo dalje.
@1domagoj1 Hvala Vam puno :)
Pozdrav društvo,
počeo sam raditi u C++-u pa rješavam random zadatke, naišao sam na ovaj zadatak i nikako ne mogu dobiti točan ispis.
Zadatak galasi ovako:
Učitavati brojeve sve dok se ne učita 0. Program ispisuje broj koji je najmanji po apsolutnoj vrijednosti(osim nule). Naprimjer, ako korisnik unese brojeve 3, -7, -1, 5, 0, program ispisuje -1. U programu nemojte koristiti "apsolutnu vrijednost", nego je implementirajte s pomoću IF-naredbe.
Pokušao sam ga riješti, ali nikako da dobijem dobar ispis, ispiše mi samo broj 3, umjesto -1. Ne znam gdje je pogreška sve sam već probao, ali ne želim odustati od njega jer me kopka cijelo vrijeme.
Hvala Vam na pomoći :)
#include<iostream>
using namespace std;
int main() {
int n, min;
cin >> n;
if (n > 0) min = n;
if ((-n) < 0)min = n;
while (n!=0)
{
if ((n > 0 && n < min)|(-n<0&&-n<min)) {
min = n;
}
cin >> n;
}
cout<<min;
system("PAUSE");
return 0;
}
Pokušaj je uvijek dobra stvar no 1domagoj1 je pisao o fail-u u konkretnom pristupu pa da ne ponavljam isto predlažem da kompajliraš niži kod i jednostavno prođeš tih par linija.
Stvar bi nakon malo proučavanja trebala biti jasna.
Ako što god i dalje bude zapreka , postaj ovdje jer kako je zaista riječ o trivijalnom kodu , pretpostavljam da ukoliko ne budem online naći će se netko da ti pojasni.
Samo ukratko :
a. rekao si da ne smiješ koristiti abs tako da isti rezultat dobivaš svojom implementacijom navedene funkcije kroz _f(int x)
u kojoj je pak zadovoljen uvjet pronalska vrijednosti putem if naredbe.
b. odmah na početku main-a zadaš neku varijablu (winner) koja predstavlja dobitan broj.
c. na poslijetku kroz while samo ide komparacija novounesenih vrijednosti s već potojećim winnerom pa ako je novi unos bolji od
postojećeg , taj postaje winner.
#include <iostream>
using namespace std;
int _f(int x)
{
if(x<0)
return -x;
else return x;
}
int main()
{
int winner , n;
cin>> winner;
while(true)
{
cin>> n;
if(n == 0) break;
if(_f(n)<_f(winner))
winner = n;
}
cout << "winner: " << winner << endl;
return 0;
}
Dobar dan!
Imam nekoliko pitanja u vezi programiranja i samom pristupu programiranju/ucenju programiranja
i novih API-ja.
Mene konkretno zanima (pitam iskusnije programere) kako i pravilno pristupiti učenju nečeg novog,
evo primjera, ja naprimjer zelim početi raditi na necemu slicnome 3D engineu
(samo neke osnove, npr. ucitavanje modela i osvjetljenje, nista vise od toga),
i sad npr ja nađem nešto poput ovoga:
http://en.wikibooks.org/wiki/OpenGL_Programming/Modern_OpenGL_Tutorial_Load_OBJ, mene sad zanima
da li bi bilo dobro početi tu proučavati što se događa ili trebam krenuti od nečeg drugog?
Da li kopiranje koda dolazi u obzir (ili kopiranje pa izmjena koda)? Da li je to neka praksa kod programera
ili programeri obično pišu kod od nule? Pošto nisam nigdje radio kao programer vrlo mi je važno da me netko uputi
kako to sve funkcionira.
Moram napomenuti da nisam totalni početnik u programiranju, radio sam na nekim projektima već, ali svejedno
cijelo vrijeme imam osjecaj da imam potpuno krivi pristup početku rada.
Da li vi planirate aplikacije unaprijed do svakog sitnog detalja ili radite sve iz glave?
Molio bih pomoc i da me netko uputi (ovo bar ne bi trebalo biti teško odgovoriti jer samo tražim neka iskustva i upute,
nije da tražim da mi netko isprogramira nove Windowse)
Ne znam sto da ti odgovorim osim, kako je tebi najlakse i kako najbrze ucis, tako radi. A iskreno mislim da se najbrze uci ako sam radis nesto. Zadaj si neki zadatak i kreni to programirati. Put ce ti biti pun pokusaja i promasaja, ali tako to ide. Takoder, imas hrpetinu open source projekata, uzmi neki aktivni i zaviri unutra.
Sto se tice pisanja aplikacija, prakticki je nemoguce iz glave iskodirati bilo sto vece od tetrisa, cak i za tetris sam si ja lagano skicirao sto i kako. S druge strane jednako je nemoguce isplanirati aplikaciju do u najsitnije detalje jer se zahtjevi prebrzo mijenjaju i dok ti sve isplaniras i krenes kodirati klijent vec 5 puta promijeni plocu. Da je to toliko jednostavno ne bi bilo hrpetine razvojnih procesa: RUP, vodopadni, agilni, ekstremni, itd. Sve ovisi o doticnoj situaciji.
Da, razumijem, ali mene interesira recimo programeri koji ce npr. jedanput u zivotu recimo raditi model loader
samo, da li se oni jos uvijek prisjecaju recimo nakon 1-2 god kako se to radi?
Meni se to često događa pošto ne programiram stalno da se jednostavno ne sjecam kako sam nešto radio
i onda moram po netu traziti primjere, a to je ono što me ubija, tj. meni to onda nije programiranje ako ja
pogledam primjere kako se nešto radi i onda otprilike ponavljam to napisano (ili nesto jako slicno tome nacinu, ne mislim
direktno na kopiranje koda) ...
A slusaj ti naucis kako koristiti alat, a s tim alatom ti stvaras program. Ti ne ucis kako napisati neki program nego ga sam stvaras pomocu stecenog znanja. Ako ti ucis napamet kako pisati neke programe onda je to krivi pristup.
Da, razumijem, ali mene interesira recimo programeri koji ce npr. jedanput u zivotu recimo raditi model loader
samo, da li se oni jos uvijek prisjecaju recimo nakon 1-2 god kako se to radi?
Meni se to često događa pošto ne programiram stalno da se jednostavno ne sjecam kako sam nešto radio
i onda moram po netu traziti primjere, a to je ono što me ubija, tj. meni to onda nije programiranje ako ja
pogledam primjere kako se nešto radi i onda otprilike ponavljam to napisano (ili nesto jako slicno tome nacinu, ne mislim
direktno na kopiranje koda) ...
Nakon jedne do dvije godine se nitko vise ne sjeca sto je radio i kako, zato se i pise dokumentacija + komentari u kodu. Druga stvar ti nemas jednu do dvije godine za zezanciju jer je podrucje dinamicno i brzo se mijenja, tehnologija koja se koristi danas sutra je zastarjela, tako da ces cesto i slobodno vrijeme potrositi na kodiranje. Treca stvar, ako si graficki programer, onda neces jednom u zivotu raditi takve stvari vec stalno (ili bar dok ti ne dojadi ili dok ne skuzis da to mozda nije za tebe, mozda ipak vise volis npr., mrezno programiranje). I cetvrta stvar, ucis koncepte, a ne kod napamet. A koncepti su svugdje isti ili slicni tako da nije neki preveliki problem isti koncept realizirati u razlicitim alatima ili jezicima.
Kako da ja napravim .exe file u MSovom VSu? Napišem kod i lupim F5 i izbaci mi da ne može naći .exe file od projekta...
Vjerojatno exe nije niti stvoren jer imaš greške u kodu.
Evo koda
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
float n;
unos: cout << "Unesite broj koji nije nula." << endl;
cin >> n;
if (n == 0)
{
cout << "Sve osim nule!" << endl;
goto unos;
}
if (n < 0)
{
cout << "Broj " << n << " je negativan. Njegova apsolutna vrijednost iznosi " << -n << "" << endl;
}
if (n > 0)
{
cout << "Broj " << n << " je pozitivan te je njegova apsolutna vrijednost ista." << endl;
}
getch();
return 0;
}
Ako niste mazohisti, manite se ljudi programiranja, to je jedna krvava rabota.
Ako niste mazohisti, manite se ljudi programiranja, to je jedna krvava rabota.
Bitno da se tebi Bill Gates poklonio kad je vidio da ti sve znaš... ;)
Evo koda
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
float n;
unos: cout << "Unesite broj koji nije nula." << endl;
cin >> n;
if (n == 0)
{
cout << "Sve osim nule!" << endl;
goto unos;
}
if (n < 0)
{
cout << "Broj " << n << " je negativan. Njegova apsolutna vrijednost iznosi " << -n << "" << endl;
}
if (n > 0)
{
cout << "Broj " << n << " je pozitivan te je njegova apsolutna vrijednost ista." << endl;
}
getch();
return 0;
}
Zaboravi naredbu goto i labele. To samo vodi lošim principima koje je kasnije teško ispravljati.
S obzirom da si se potrudio nešto napisati evo ti malo prepravljen code:
#include<iostream>
using namespace std;
int main(){
float n;
do{
cout << "Unesite broj koji nije nula: ";
cin >> n;
if (n == 0)
cout << "Sve osim nule!\n";
} while (n == 0);
if (n < 0)
cout << "Broj " << n << " je negativan. Njegova apsolutna vrijednost iznosi " << -n << "" << endl;
else
cout << "Broj " << n << " je pozitivan te je njegova apsolutna vrijednost ista." << endl;
return 0;
}
zanimljivo da je taj kod rađen u školi
Onda jao si ga vama s tim profesorom jer očito nema pojma.
Opet mi izbaci da ne postoji .exe file.... Šta sve trebam imati za taj .exe file?
Ako niste mazohisti, manite se ljudi programiranja, to je jedna krvava rabota.
Bitno da se tebi Bill Gates poklonio kad je vidio da ti sve znaš... ;)
a kaj ti mislis da budes novi Bill Gates?
Znam da nema veze s temom ,molim vas da mi odgovorite,imam 18 godina nisam se susretao s programiranjem,ako sada pocnem uciti ima li sanse da nesto ozbiljnije napravim,krenut cu i na faks
Znam da nema veze s temom ,molim vas da mi odgovorite,imam 18 godina nisam se susretao s programiranjem,ako sada pocnem uciti ima li sanse da nesto ozbiljnije napravim,krenut cu i na faks
naravno da ima, samo trebas biti uporan
Dex.pwn kaže...
Opet mi izbaci da ne postoji .exe file.... Šta sve trebam imati za taj .exe file?
itko?
Dex.pwn kaže...
Opet mi izbaci da ne postoji .exe file.... Šta sve trebam imati za taj .exe file?
itko?
Kod ti radi, ne koristim Microsoft Visual, ali kod takvih stvari(programa od par redova) najjednostavnije rjesenje ti je copy paste kod u novi projekt i run.
Ne razumijem kako misliš c/p u novi prjekat i run?