ali, meni javlja da ovo tvoje u drugom if bloku tipa A=810 nije pravilna konverzija iz char u int?
Programiranje u C++-u - pitanja i odgovori
- poruka: 7.284
- |
- čitano: 1.949.646
- |
- moderatori:
XXX-Man
- +/- sve poruke
- ravni prikaz
- starije poruke gore
ali, meni javlja da ovo tvoje u drugom if bloku tipa A=810 nije pravilna konverzija iz char u int?
Mislim da vam neće dati zadatak iz meni i njemu poznatih razloga :D ... Inače, koristi Switch i Case, puno elegantnije... I ne možeš koristiti a, b, c, d, bla bla, moraš baš ići na 1, 2, 3, 4, itd, itd... Tu ti pomaže Case... I nemoj sve konvertirati u minute, koristi naš Time Format, svejedno ti je, lakše čak...
Najepic programski kod koji sam vidio dugo vremena :D
Zivo me zanima zadatak sada.
Mislim da vam neće dati zadatak iz meni i njemu poznatih razloga :D ... Inače, koristi Switch i Case, puno elegantnije... I ne možeš koristiti a, b, c, d, bla bla, moraš baš ići na 1, 2, 3, 4, itd, itd... Tu ti pomaže Case... I nemoj sve konvertirati u minute, koristi naš Time Format, svejedno ti je, lakše čak...
nije, ne mozes onda mnozit sa int-om kasnije
ma necu ga rijesit i bok, kad sam slozio sve if-ove za jednu liniju unosa imao sam preko 400 linija, znaci ukupno oko 1500 linija if-a, drugacije ne znam rijesit.
odnosno dalo bi se to kad bih znao konvertirat const char (A) u int odnosno pridruziti char nekom intu
odnosno dalo bi se to kad bih znao konvertirat const char (A) u int odnosno pridruziti char nekom intu
zelis dobiti ascii vrijednost chara ili konvertirati broj koji netko unese kao string u int?
i majke ti 1500 ifova :D
Ajme daj daj zadatak haha :)
Kada s Caseom zamijeniš 1 sa 9, onda možeš... Inače, ja sam ga riješio uz pomoć drugog fakultetlije u domu (FER, računarstvo, programsko inženjerstvo), pokazao mi je neke svoje skripte s faksa i uputio kako da riješim te sam čak i shvatio način na koji to treba uraditi... Ukupno 59 linija koda...
Nema tu ničega moga, sve je tvoje, ja sam samo prepravio uvjete i uljepšao kod. Nikakvih drugih funkcionalnih izmjena nije bilo. Daj zadatak, nije bitno što si rekao da ga nećeš riješiti bitno je da naučiš što si trebao napraviti.
Evo rjesenjce :)
#include <iostream>
using namespace std;
int main()
{
int location[4] = {0};
char rawStart[4] = {0};
char rawEnd[4] = {0};
float start[4] = {0};
float end[4] = {0};
float salary[4] = {0};
float total = 0;
for (int i=0; i<4; i++)
{
cin>>location[i]>>rawStart[i]>>rawEnd[i];
if ((int)rawStart[i]>47 && (int)rawStart[i]<58)
start[i]=(int)rawStart[i]-48;
else if ((int)rawStart[i]>40 && (int)rawStart[i]<73)
start[i] = (int)rawStart[i]-31;
if ((int)rawEnd[i]>47 && (int)rawEnd[i]<58)
end[i]=(int)rawEnd[i]-48;
else if ((int)rawEnd[i]>40 && (int)rawEnd[i]<73)
end[i] = (int)rawEnd[i]-55;
}
cout<<endl;
for (int i=0;i<4;i++)
{
if (location[i]>0 && location[i]<10)
{
salary[i]=(end[i]-start[i])/2*10;
cout<<(i+1)<<". $"<<salary[i]<<endl;
}
if (location[i]>9 && location[i]<20)
{
if ((end[i]-start[i])>8)
salary[i]=((end[i]-start[i]-8)/2*12)+(4*8);
else
salary[i]=(end[i]-start[i])/2*8;
cout<<(i+1)<<". $"<<salary[i]<<endl;
}
if (location[i]>19 && location[i]<30)
{
if ((end[i]-start[i])>8)
salary[i]=((end[i]-start[i]-8)/2*24)+(4*12);
else
salary[i]=(end[i]-start[i])/2*12;
cout<<(i+1)<<". $"<<salary[i]<<endl;
}
total+=salary[i];
}
cout<<"5. $"<<total;
return 0;
}
Skuzio sam da mi unos trazi brojeve odvojene razmakom a ne zarezom, ali sam preljen za to ispraviti :P Dakle unos u formatu x y z
Mora biti u formatu x, y, z ili x,y,z...
Edit: Sklonjeno rješenje zbog kojekakvih prigovora.
Molila bih vas riješenje ovog zadataka, namijenjen je za ispit pa ako bi bili voljni riješiti ga u potpunosti bila bih jako zahvalna.. :)
Napiši klasu koja opisuje autobus. Podatkovni članovi su ime (varijabla "ime" tipa char), tip (varijabla "tip" tipa char) i broj sjedala (varijabla "br_sjedala" tipa int).
Funkcijski čalnovi su podrazumijevani konstruktor i destruktor, konstruktor u kojem je moguće postaviti vrijednosti svih podatkovnih članova te funkcije (dajPodatke),
koja na ekran ispisuje sve podatke o automobilu kada se pozove. U main funkciji statički kreiraj objekt za autobus pod imenom Neoplan tipa N116 koji ima 52 sjedala.
Pozivom funkcije dajPodatke ispišite sve podatke kreiranog objekta.
Očito nisi upoznata s načinom rada ovdje: pomoći ćemo ti ako si sama sebi voljna pomoći. Nisi napisala što ti je problem u ovom zadatku tj. dokle si stigla i gdje si zapela. Gdje je code onoga što si do sada napravila?
Poprilično neozbiljan nastup nekoga tko se tobože sprema za ispit.
Očito nisi upoznata s načinom rada ovdje: pomoći ćemo ti ako si sama sebi voljna pomoći. Nisi napisala što ti je problem u ovom zadatku tj. dokle si stigla i gdje si zapela. Gdje je code onoga što si do sada napravila?
Poprilično neozbiljan nastup nekoga tko se tobože sprema za isp
Ovakva je situacija, to je jedini zadatak iz klasa koji imam na ispitu, vjerovatno će biti malo izmjenjen ali istog tipa. Ne znam ga zapoćeti a nemam ni vremena naučiti klase jer je ispit sutra a gradivo je poprilično opsežno što i sami znate. Zato sam zamolila za rješenje Vas.. Ako ste voljni pomoći please pomognite, a ako niste razumijeti ću, znam da Vam je tlaka imati posla s nekim tko nema pojma... Ali eto pokušala sam jer nemam drugog izbora... Vi ste mi jedina solucija jer mi profesor naravno neće pomoći u riješenju istoga.
Radim program koji generira ždrijeb za utakmice. Dio koda čiji mi je rad nejasan je ovaj:
while(check == 0) {
for(i=0; i<(broj-1)*2; i++) {
printf("%d. KOLO:\n", i+1);
for(j=0; j<broj/2; j++) {
a = j;
do {
prvi[j] = rand() % broj;
drugi[j] = rand() % broj;
} while(prvi[j] == drugi[j]);
for(k=0; k<j; k++) {
if(prvi[k] == prvi[j] || drugi[k] == drugi[j] || prvi[k] == drugi[j]
|| drugi[k] == prvi[j] || *(tab+prvi[j]*broj+drugi[j]) == 1) {
j--;
break;
}
}
if(j==a) {
printf("%d - %d\n", prvi[j], drugi[j]);
*(tab+prvi[j]*broj+drugi[j]) = 1;
}
check++;
if(check > 1000) {
for(i=0; i<broj; i++) {
for(j=0; j<broj; j++)
*(tab+i*broj+j) = 0;
}
check = 0;
break;
}
}
if(check == 0)
break;
printf("\n");
}
}
- polja prvi i drugi označavaju domaću i gostujuću momčad
- varijabla broj je broj momčadi za ždrijeb
- polje tab, veličine broj*broj je prije petlje ispunjeno nulama i kako se neki par izvuče, tako se na pripadajuće mjesto u tablici mjenja u 1
- varijabla check služi za slučaj da u nekom kolu ostane još jedan par, ali su se oni već susreli u prošlom kolu. Zbog toga što su ostale samo dvije momčadi, nemoguće je dovršiti to kolo pa se cijeli ždrijeb briše i kreće isponova.
Problem je u tome što program ponekad ne prihvaća boldani uvjet (to pretpostavljam pošto treba otprilike 3x više vremena da se izvrši i s tim uvjetom nego bez), tj. redovito se događa da dobijem istu utakmicu u različitim kolima iz nekog nepoznatog razloga (???). Provjereno je da je polje tab ispunjeno nulama prije petlje, provjereno je da se polje tab mjenja u nule samo kad se ždrijeb briše, provjereno je da se polje tab pravilno ispunjava jedinicama. Kad se drugi put upiše ista utakmica, polje tab se ne mjenja (vjerojatno zato što je već upisana jedinica na tom mjestu).
EDIT: sve varijable su pravilno deklarirane i checku je pridružena nula na početku. Pseudoslučajni odabir je izveden pomoću timea, izvan ovog dijela koda.
Editor na forumu me opako zahebava s formatiranjem koda 
Očito nisi upoznata s načinom rada ovdje: pomoći ćemo ti ako si sama sebi voljna pomoći. Nisi napisala što ti je problem u ovom zadatku tj. dokle si stigla i gdje si zapela. Gdje je code onoga što si do sada napravila?
Poprilično neozbiljan nastup nekoga tko se tobože sprema za isp
Ovakva je situacija, to je jedini zadatak iz klasa koji imam na ispitu, vjerovatno će biti malo izmjenjen ali istog tipa. Ne znam ga zapoćeti a nemam ni vremena naučiti klase jer je ispit sutra a gradivo je poprilično opsežno što i sami znate. Zato sam zamolila za rješenje Vas.. Ako ste voljni pomoći please pomognite, a ako niste razumijeti ću, znam da Vam je tlaka imati posla s nekim tko nema pojma... Ali eto pokušala sam jer nemam drugog izbora... Vi ste mi jedina solucija jer mi profesor naravno neće pomoći u riješenju istoga.
Kolegice, ako zadatak ne znate niti započeti kako onda mislite shvatiti rješenje? I naravno da Vam profesor neće pomoći jer pristupate kao klasični kampanjac koji želi brzi tečaj zadnji dan prije ispita. To jednostavno tako ne ide.
Od rješenja zadatka nemate nikakve koristi ukoliko ne razumijete pojedine komponente koje se traže u zadatku. konkretno u Vašem zadatku: konstruktor, destruktor, preopterećenje funkcije, statički i dinamički objekti itd. pa bih Vam radije preporučio da se koncetrirate na te pojedine komponente nego li na zadatak u cjelini. Tad ćete možda barem nešto uspjeti naučiti sutra do ispita.
S druge strane, kad pokažete neki trud i zanimanje u obliku coda kojeg ste do sada radili pa Vam nije jasno kako dalje ili sl. možete se javiti i nema problema.
Sve su ti to jednostavne stvari, evo ono najosnovnije:
class Autobus
{
public:
Autobus(); // podrazumjevani konstruktor
~Autobus(); // destrutor
private:
char* ime; // podatkovni clnanovi klase
char* tip;
int brojSjedala;
};
Ovo je klasa Autobus, članove klase stavljaš pod privatne i javne, pod javne staviš one koje dohvaćaš iz vanjskog koda. Postoje podatkovni i funkcijski članovi klase, podatkovni su varijable, a funkcijski funkcije, odnosno metode.
Dakle, ovdje imaš podrazumjevani konstruktor, to je posebna funkcija koja služi za stvaranje objekta, i imaš destruktor - koji služi za uništavanje objekta, još imaš tri podatkpvna člana, koje možeš dohvatiti samo unutar klase.
Još ovdje moraš dodati konstrutor kojim postavljaš vrijednosti podatkovnih članova klase, dakle konstruktor koji kao funkcija ima tri argumenta koje u tijelu konstruktora dodjeljuješ podatkovnim članovima klase, a možeš i na donji način.
Autobus(char* ime, char* tip, int brojSjedala)
: ime(ime), tip(tip), brojSjedala(brojSjedala) {};
Ajde lipo napiši taj konstruktor u kod, pa iz maina preko ovog konstruktora statički kreiraj objekt autobus1, ovako:
Autobus autobus1("Bananko", "Man", 89);
Još samo trebaš vidjeti jesi li dobro napravila, odnosno napisati funkcijski član DajPodatke, kojeg strpaš pod public i koji ispisuje podatkovne članove objekta.
Dakle:
void DajPodatke()
{
cout<< ime << " " << tip << " " << brojSjedala << endl;
}
Pošto ćeš ovu funkciju strpati pod public članove klase možeš je pozvati iz maina preko objekta kojeg si kreirala.
autobus1.DajPodatke();
Pozdrav !
Izbacuje mi na dolje "oznacenoj" liniji error : expected primary expression before ")" token i expected ; before")" token.
Moje pitanje je,:" Zašto pobogu ?"
if(br_kol=22){
cout<<"Unesite broj bodova ostvaren na kolokviju :" << endl;
cout<<"Pismeni dio:" << endl;
Javlja error-> cin>>pismeni;
cout<<"Usmeni dio: " << endl;
cin>>usmeni;
if(pismeni<6 || usmeni<6) cout<<"Pali ste kolegij,vise srece na ispitu" << endl;
if(pismeni<6 || usmeni<6) return;
kolokvij=pismeni+usmeni;
}//if_kolokviji
Daj cio kôd, a inače ti taj uvjet neće raditi, jer si napisao br_kol=22, umjesto br_kol == 22, zašto uvjek tu griješite...
Dalje, šta si htio dobiti sa ta dva uvjeta gdje provjeravaš pismeni ili usmeni, obadva su ti ista.
Ugl. daj cio kôd, pa ćemo vidjeti.
Hvala na sugestiji, ovo sam pretipkao sa draft verzije u pravom programu mi je == a ostatak koda radi super,sve su varijable deklarirane i ostalo, kopirao bih ga ali ne mogu jer je pisan u verifikatoru 3.14(najgori program u svemiru) i odatle dolazi razlog zasto dva ista uvjeta ( program broji {} i na temelju njih treba testirat program i mogao bih o tome do sutra...) tako da ovo je max podataka sto nazalost mogu, zapeo sam s ovim vec sat i pol i svaka ideja bi dobro dosla :/
P.S.
I mi smo nedavno radili objektno i za razliku od kolegice radim redovito ali može li mi netko objasnit što se dobiva s tim public/private pristupom? mislim čemu to i može li mi netko objasnit zasto je to tako dobro kad se svugdje koristi?
#include<iostream>
using namespace std;
int main()
{
int brojKol = 22, pismeni, usmeni, kolokvij;
if(brojKol==22)
{
cin>> pismeni;
cin>> usmeni;
if(pismeni<6 || usmeni<6)
{
cout<< "Pali ste" << endl;
kolokvij = 0;
}
else
kolokvij = pismeni + usmeni;
}
return 0;
}
Ovo radi.
Pod private se stavljaju članovi klase za koje ne želiš da korisnici koji koriste klasu imaju pristup njima, da ih ne bi mjenjali, kad staviš pod public imaš tom članu pristup preko instance klase, odnosno objekta, to je ono što su te učili kao jedno od načela OOP - enkapsulacija.
Hvala na sugestiji, ovo sam pretipkao sa draft verzije u pravom programu mi je == a ostatak koda radi super,sve su varijable deklarirane i ostalo, kopirao bih ga ali ne mogu jer je pisan u verifikatoru 3.14(najgori program u svemiru) i odatle dolazi razlog zasto dva ista uvjeta ( program broji {} i na temelju njih treba testirat program i mogao bih o tome do sutra...) tako da ovo je max podataka sto nazalost mogu, zapeo sam s ovim vec sat i pol i svaka ideja bi dobro dosla :/
#include <iostream>
using namespace std;
int main()
{
int br_kol=22;
int pismeni, usmeni, kolokvij;
if (br_kol==22){
cout<<"Unesite broj bodova ostvaren na kolokviju :" << endl;
cout<<"Pismeni dio:" << endl;
cin>>pismeni;
cout<<"Usmeni dio: " << endl;
cin>>usmeni;
if(pismeni<6 || usmeni<6) cout<<"Pali ste kolegij,vise srece na ispitu" << endl;
if(pismeni<6 || usmeni<6) return 0;
kolokvij=pismeni+usmeni;
}//if_kolokviji
return 0;
}
Omotao sam tvoj kod nekakvim minimalnim kodom da bih kompajlirao, i kompajlira se bez greške. :S
Savjet: stavi u komentar cijeli kod unutar if bloka, i onda odkomentiraj liniju po liniju pa gledaj što se događa...
P.S.
I mi smo nedavno radili objektno i za razliku od kolegice radim redovito ali može li mi netko objasnit što se dobiva s tim public/private pristupom? mislim čemu to i može li mi netko objasnit zasto je to tako dobro kad se svugdje koristi?
http://www.bug.hr/forum/post/programiranje/programiranje-c-pitanja-odgovori/3266584.aspx
P.S.
I mi smo nedavno radili objektno i za razliku od kolegice radim redovito ali može li mi netko objasnit što se dobiva s tim public/private pristupom? mislim čemu to i može li mi netko objasnit zasto je to tako dobro kad se svugdje koristi?
Skrivanje podataka je jedno od 4 svojstva C++a. Iz nekog razloga možda ne želiš dati direktan pristup nekoj varijabli u klasi pa ju postaviš kao private tj. za nju napraviš javne get i set metode koje pristupaju tom članu. Npr;
#include <iostream>
using namespace std;
class Sat{
private:
int sec, min, sat;
public:
Sat() : sec(0), min(0), sat(0) {}
void setSec(int sekunde){
sat = sekunde / 3600;
min = (sekunde - sat * 3600) / 60;
sec = sekunde % 60;
}
int getSec(){
return sat * 3600 + min * 60 + sec;
}
void ispis(){
cout << sat << ":" << min << ":" << sec << endl;
}
};
int main(){
Sat Budilica;
Budilica.setSec(4000);
Budilica.ispis(); // 1 sat, 6 min i 40 sec
cout << Budilica.getSec(); // 4000
return 0;
}
Sada bi bilo pogrešno dati direktan pristup članu 'sec' unutar funkcije main jer bi ostale članske varijable (min, sat) ostale nepromijenjene u slučaju da su sekunde veće od 60. Zato je sada poželjno zabraniti direktan pristup tim članskim varijablama već im pristupati isključivo preko get i set metoda koje će se pobrinuti da sve članske varijable budu inicijalizirane kako treba.
programski jezik C
{napisite program , koji bi racunao elemente Fibonaccijevega niza, dokle je element niza (slijeda)manji od 10000. Izpis nije potreben.
Fibonaccijev slijed je – clan niza je zbir prethodnih dva člana, pri čemu su prva dva člana 1:
1, 1, 2, 3, 5, 8, ... ,an=an-1+an-2, ... i treba uraditi dijagram toka.......}
ako ko zna uraditi bio bih zahvalan...........
Ne pišemo zadaće. Pogotovo ne petkom.
Ali ako si napisao nešto koda i zapeo, postaj ovamo pa ćemo ti pomoći.
programski jezik C
{napisite program , koji bi racunao elemente Fibonaccijevega niza, dokle je element niza (slijeda)manji od 10000. Izpis nije potreben.
Fibonaccijev slijed je – clan niza je zbir prethodnih dva člana, pri čemu su prva dva člana 1:
1, 1, 2, 3, 5, 8, ... ,an=an-1+an-2, ... i treba uraditi dijagram toka.......}
ako ko zna uraditi bio bih zahvalan...........
Probaj ovako sa petjom:
while(suma<10000)
{
suma = prvi + drugi;
prvi = drugi;
drugi = suma;
}
prije petlje prvi inicijaliziraš na 0, a drugi i suma na 1.
u svakoj iteraciji petlje zbrajaš tekući i prethodni.
napomena: taj elemet niza koji je manji od zadanog broja 10000 nalazi se u varijabli prvi.
Evo vam zadatak, imali smo isti...
Genijalac s V. ili XV.? Nadam se da si svjestan, da neke skole nisu jos imale 1. kolo...
Jesam, svjestan sam... I sklonio sam rješenje...
ovako sam nesto radio al ne ide nikako
int main()
{
float a1=0, a2=1, n=1;
while (n<10000)
{
n++;
a1=a1+a2;
a2=a2+a1;
cout<<a1>>endl;
cout<<a2>>endl;
}
system PAUSE.......
programski jezik C
{napisite program , koji bi racunao elemente Fibonaccijevega niza, dokle je element niza (slijeda)manji od 10000. Izpis nije potreben.
Fibonaccijev slijed je – clan niza je zbir prethodnih dva člana, pri čemu su prva dva člana 1:
1, 1, 2, 3, 5, 8, ... ,an=an-1+an-2, ... i treba uraditi dijagram toka.......}
ako ko zna uraditi bio bih zahvalan...........
Probaj ovako sa petjom:
while(suma<10000)
{
suma = prvi + drugi;
prvi = drugi;
drugi = suma;
}
prije petlje prvi inicijaliziraš na 0, a drugi i suma na 1.
u svakoj iteraciji petlje zbrajaš tekući i prethodni.
napomena: taj elemet niza koji je manji od zadanog broja 10000 nalazi se u varijabli prvi.
ovako sam nesto uradio ali ne ide nikako ....
int main()
{
float a1=0, a2=1, n=1;
while (n>10000)
{
a1=a1+a2;
a2=a2+a1;
cout<<a1>>endl;
cout<<a2>>endl;
}
system PAUSE........
ovako sam nesto radio al ne ide nikako
A sad?
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
float a1=0, a2=1;
int n=1;
while (n<10000)
{
n++;
a1=a1+a2;
a2=a2+a1;
cout<<a1<<endl;
cout<<a2<<endl;
}
system("pause");
return 0;
}
Ali ne kužim što bi to trebalo raditi...
EDIT: sad vidim, evo ti na što je floki mislio:
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int prvi=0, drugi=1, suma=0, n=1;
while (n<10000)
{
n++;
suma=prvi+drugi;
prvi=drugi;
drugi=suma;
cout<<drugi<<endl;
}
system("pause");
return 0;
}
Btw. ne razumijem toliku fascinaciju floating point tipom, kada sam ja počinjao s programiranjem integer mi je bio puno prirodniji jer nije bio sklon "mušicama" kojima je float sklon, a koje ja tada nisam razumio. :S