Nigdje ovdje nije potrebna klasa. U prvom slučaju eventualno je potrebna struktura. Ovo su vrlo jednostavni zadaci koje ne treba tako komplicirati, a svi rade na istom principu: Deklariraj polje struktura u koje ćeš spremati podatke, a zatim to polje sortiraj, ispiši ovako, onako itd.. Nema tu nikakvih komplikacija.
C++ tutorijali...
- poruka: 148
- |
- čitano: 117.971
- |
- moderatori:
Lazarus Long, XXX-Man, vincimus
Bojim se da klase nismo ni radili, zato sam ostao malo zbunjen...
Jazzfan, puno hvala na trudu ali ako može neko jednostavnije objašnjenje da se ne mučim sad s klasama pošto ih nismo ni radili!
Poštovanje!
Evo ovako, trebao bi pomoć. Dal bi mi netko mogao riješiti sljedeća dva zadatka!
Zadatak 1.
U programskom jeziku C++ napišite program koji će:
1. Tražiti od korisnika da unese broj studenata n (maksimalan broj studenata je 5) te omogućiti unos n ocjena te n imena i prezimena studenata.
2. Ispisati informacije o studentima obrnutim redoslijedom od njihova unosa.
3. Ispisati informacije o studentu s najvećom ocjenom.
4. Ispisati prosjek (aritmetičku sredinu) ocjena svih studenata. Osim toga, potrebno je ispisati sve studente čija je ocjena veća od prosječne.
Program je potrebno realizirati pomoću izbornika.
Zadatak 2.
Napišite C++ program koji će učitavati prirodni broj N te dinamički alocirati polje tipa short duljine N. Treba učitati N brojeva, sortirati ih uzlazno, te ih ispisatu u decimalnom, oktalnom i heksadecimalnom obliku.
Program treba koristiti sljedeće funkcije:
Citaj - Funkcija tipa void kojom se učitava polje od N brojeva
Sortiraj - Funkcija kojom se sortira polje brojeva
Ispisi - Funkcija kojom se ispisuje polje od N brojeva i to u sva tri oblika.
Primjer:
Upisite N: 5
Upisite 1. broj: 35
Upisite 2. broj: 12
Upisite 3. broj: 44
Upisite 4. broj: 25
Upisite 5. broj: 62
Ispis:
Dec Hex Oct
12 0c 14
25 19 31
35 23 43
44 2c 54
62 3e 76
ZABRANJENO JE KORIŠTENJE GLOBALNIH VARIJABLI!
Eto, bio bih veoma zahvalan kad bi mi netko pomogao riješiti ova dva zadataka...
dalje u strukturu i ispis za više njih ako budeš znao ,ako ne,rješim kad se vratim jer me duže neće biti.
Samo reci ako niste radili vektore ili dokud ste stigli(strukture,polja) da se možemo orijentirati.
#include <iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<iomanip>
using namespace std;
int main()
{
cout<<"Unesite vase ime i prezime : "<<endl;
string name;
getline(cin,name);
cout<<"Dobar dan, " + name + " ! ";
cout<<endl;
vector<double>spremiste_ocjena;
double ocjene;
cout<<"Unesite Vase ocjene i znak za kraj kad ste zavrsili s unosom(Ctrl + Z): "<<endl;
while(cin>>ocjene)
spremiste_ocjena.push_back(ocjene);
typedef vector<double>::size_type vektor_velicina;
vektor_velicina velicina = spremiste_ocjena.size();
if(velicina==NULL)
{
cout<<"Morate unijeti vase ocjene!!!!"<<endl;
return 1;
}
sort(spremiste_ocjena.begin(),spremiste_ocjena.end());
//sad izracun srednje ocjene
vektor_velicina sredina = velicina/2;
double srednja;
srednja = velicina % 2 == 0 ?
(spremiste_ocjena[sredina] + spremiste_ocjena[sredina-1])/2
:spremiste_ocjena[sredina];
//sad ispis konacne ocjene jednog studenta
streamsize prec = cout.precision();
cout<<"Gospodin student, " + name + " ,Vasa prosjecna ocjena je : "<<setprecision(3)
<<srednja<<setprecision(prec);
cout<<endl;
return 0;
}
Ctrl + Z ti je kad završiš s unosom.
1. zadatak...
#include <iostream.h>
#define MAX 5
struct Student
{
char ime[20];
char prezime[20];
int ocjena;
};
void Obrnuti(struct Student *X, int elem){
for(int i = elem-1; i >=0; i--)
cout << X[i].ime << " " << X[i].prezime
<< ", " << X[i].ocjena << endl;
}
Student Najveca(struct Student *X, int elem){
Student Pom = X[0];
for(int i = 1; i < elem; i++)
if(X[i].ocjena > Pom.ocjena)
Pom = X[i];
return Pom;
}
void Sredina(struct Student *X, int elem){
int i, s = 0;
float pr;
for(i = 0; i < elem; i++)
s += X[i].ocjena;
pr = (float)s/elem;
cout << "Prosjek: " << pr << endl;
cout << "Studenti iznad prosjeka: " << endl;
for(i = 0; i < elem; i++)
if(X[i].ocjena > pr)
cout << X[i].ime << " " << X[i].prezime
<< ", " << X[i].ocjena << endl;
}
int main()
{
int izbor;
struct Student Info[MAX];
for(int i = 0; i < MAX; i++)
{
cout << "Ime i prezime: ";
cin >> Info[i].ime >> Info[i].prezime;
cout << "Ocjena: ";
cin >> Info[i].ocjena;
}
do{
cout << endl;
cout << "1) Obrnuti ispis\n";
cout << "2) Student s najvećom ocjenom\n";
cout << "3) Prosječna ocjena i studenti iznad prosjeka\n";
cin >> izbor;
}while(izbor < 1 || izbor > 3);
if(izbor == 1) Obrnuti(&Info[0], MAX);
if(izbor == 2)
{
Student Pom = Najveca(&Info[0], MAX);
cout << "Student s najvećom ocjenom je: ";
cout << Pom.ime << " " << Pom.prezime
<< ", " << Pom.ocjena << endl;
}
if(izbor == 3) Sredina(&Info[0], MAX);
return 0;
}
Evo drugi zadatak...a tvoj je zadatak da iz ovog izvučeš funkcije i to je to.
#include <iostream>
#include<iomanip>
using namespace std;
int main()
{
short *pokaziv=0;
pokaziv = new short [10];
int priv;
int z;
cout<<"Unesite deset brojeva u polje : "<<endl; //ovdje ti je unos mozes je staviti u void funk
for(short x =0;x<10;x++)
{
cin>>pokaziv[x];
}
//sortiranje
do
{
z=0;
for(short y = 0;y<9;y++)
{
if(pokaziv[y]>pokaziv[y+1])
{
priv=pokaziv[y];
pokaziv[y]=pokaziv[y+1];
pokaziv[y+1]=priv;
z=1;
}
}
}while(z==1); //zavrseno sortiranje
cout<<"Sortirano polje u decimalnom od najmanjeg: "<<endl;
for(short a=0;a<10;a++)
{
cout<<setw(6)<<pokaziv[a]<<endl;
}
cout<<"Ispis u heksadecimalnom:"<<endl;
for(short a=0;a<10;a++)
{
cout<<setw(6)
<<hex<<pokaziv[a]<<endl;
}
cout<<endl;
cout<<"Ispis u oktalnom:"<<endl;
for(short a=0;a<10;a++)
{
cout<<setw(6)
<<oct<<pokaziv[a]<<endl;
}
cout<<"Ovdje jos pokazuje na heap!"<<endl;
cout<<*pokaziv<<endl<<endl<<endl;
delete [] pokaziv; //ovdje ga micemo.
cout<<"Dokaz da smo sve ispraznili."<<endl;
cout<<*pokaziv<<endl;
return 0;
}
Sad malo i sam dok ti koji kolega ili ja dokraja ne pomognemo....bitno je da razumiješ.
------------------------------------------------------------------------------------------------------------
O, super! Puno hvala svima na trudu!!!
Inače, mi smo radili nakon kontrole toka programa, polja i nešto samo malo funkcije. Tako da bi te zadatke trebalo riješiti u skladu s tim znanjem, ako se uopće daju tako riješiti...
Može neko riješenje samo s poljima ako je moguće to riješiti samo s njima?!
Dakle bez klasa i struktura...
Operacije nad bitovima.
Ovo je samo mala digresija koju ću objasniti kad budem imao vremena.
Zasad mali zadatak koji pokušajte riješiti a da ne pokrenete progarm.
Iz glave dakle,ili ručno ....naravno operacije nad pojedinim bitom i njihove oparatore
ćemo objasniti ,ali neka stoji zadatak pa može i koji drugi autor objasniti ako ima vremena.
#include <iostream>
using namespace std;
int main()
{
unsigned broj= 555;
int x = (broj>>4) & ~(~0<<3);
cout<<x<<endl;
return 0;
}Evo na slici dolje vam je slikoviti prikaz što i kako se dođe do rješenja .
Kasnije o samim definicijama bit-operatera.
__________________________________________________________________________
Imam manji problem.Kako napravit da ti pri unosu u polje u koje treba broj ako uneseš slovo izbaci grešku tj. ono što sam sam sastavio.
Evo kako sam ja to zamislio:
#include<iostream>
using namespace std;
int main ()
{
int broj1,broj2,broj3;
opet:cout << "Broj 1: ";
cin >> broj;
cout << "Broj2: ";
cin >> broj2;
if(broj1=!int)//kako ide ova sintaksa pošto ovako kako sam je upisao ne radi
{ //zelim da mi kada upisem u polje 'broj1' slovo a ne broj izbaci upozorenje(koje sam
cout << "Niste upisali broj!"<<endl;//sastavio,a goto funkcijom pokrene ponovo taj upis
goto opet;
}
broj3=broj1+broj2;
cout << broj1 <<" + " <<broj2 << " iznosi " <<broj3;
system("pause");
return 0;
}
Eh, ne bi to tako išlo ;) Da osiguraš program od takvih grešaka sve što unosiš neka bude string ili char polje. Tada, nakon unosa, provjeriš da li se u tom stringu tj. char polju nalaze samo brojevi ili ima i grešaka.
pa, gle...
prvo, deklariras varijablu kao int... znaci, ako ti probas ucitati znak (char) kao int, dogodit ce se pretvorba tipa char u int... to rezultira da se u varijablu int zapisuje ASCII kod tog znaka...
a sada, za ostale tipove ti vrlo vjerojatno ovisi o kompajleru: ili ces dobiti gresku da se nezna kako pretvorit ta 2 tipa, ili ces kao rezultat dobit NULL,tj. 0 (vrlo vjerojatno ako ucitavas pointer na tip u opbicnu varijablu), ili ce se varijabli pridruzit vrjednost neke random adrese (znaci, i random vrjednost)
znaci, ovo tvoje prakticki nema smisla :)
jer, ili ces dobit neki broj, ili gresku...
i jos jedna zamjerka: zasto koristis goto???
to je zastarjeli nacin programiranja, koji se vise niti ne koristi, a niti ima koristi od njega, s obzirom da uopce nije poterban, a samo radi nevjerojatne nerede po kodu.... Izbjegavaj to... npr, ovo sta si ti napisao, se moze i while petljom:
while (uvjet) { naredbe }
znaci, sve dok je uvijet u zagradi istinit, ponavlja naredbe...
Ok,nisam vas skužio.Može ispravka kako bi to izgledalo na mom gornjem primjeru?
Ok,nisam vas skužio.Može ispravka kako bi to izgledalo na mom gornjem primjeru?
#include <iostream.h>
int JesiInteger(char* niz)
{
int p = 1;
for(int i = 0; niz[i]; i++)
if(niz[i] < '0' || niz[i] > '9')
p = 0;
return p;
}
int main()
{
int n;
char unos[10];
cout << "Unesi cijeli broj: ";
cin >> unos;
if(JesiInteger(unos))
{
n = atoi(unos);
cout << n;
}
else
cout << "Niste unijeli cijeli broj!";
return 0;
}
Samo primjer kako bi trebao napraviti svoj program..........
#include<iostream>
#include<string>
using namespace std;
int main()
{
const int MAX = 100; //maksimalno se toliko moze unijeti znakova..
//mogli smo i se #define (pretprocesorski)ali to je vise c nego c++
char ime[MAX];
int a;
int b;
do
{
cout<<"Unesite niz slova ili ime : "<<endl;
cout<<endl;
cin.getline(ime,MAX);
a = 0;
b=1;
while(ime[a] !='\0') //dok ne dodjemo do kraja
{
if(isdigit(ime[a]))//ako je u unosu broj
{
b=0;
}
a++;//kreni dalje ako je b=1;
}
}
while(b==0); //vrti se dok je b=0 tj. dok je uvjet ispunjen
cout<<endl<<endl;
cout<<"Upisali ste : "<<ime<<" ! "<<endl;
return 0;
}
//pokusaj unijeti broj i program te vraca na pocetak
//radi se o klasicnom ispitivanju unosa s tipkovnice
//isdigit
//isalpha
//islower
//itd.......
//eto primjer isitivanja pa probaj kombinirati i slicno.
....a ovdje ti je samo mali primjer ispitivanja....
#include<iostream>
#include<string>
using namespace std;
int main()
{
char znak;
cout<<"Unesite nesto s tipkovnice(samo jednom tipku stisnite) : "<<endl;
cin>>znak;
if(isdigit(znak)) //ispituje da li je uikjet broj!!!
cout<<"Unijeli ste broj."<<endl;
else
cout<<znak<<" : nije broj vas unos."<<endl;
return 0;
}
.....eto pa kombiniraj.
1) Gornji primjer je bespotrebno kompliciran dvijema ugniježdenim petljama. Molim autora da pročita i da si ponovi kad se koja petlja koristi jer umjesto ove dvije dovoljna je samo jedna. Također, nema potrebe za dva dodatna brojača. Ovako je program nejasan i teško razumljiv čak i iskusnijima, a kamoli onima koji pokušavaju nešto naučiti.
2) Dijelovi koda koji ispituju bilo statičke strukture ili obične varijable, te u ovisnosti o tome vraćaju neki rezultat se pišu u funkcijama. Ovo gore je sasvim neupotrebljivo ako se na gornji način učitava polje integera. Tada su to kilometri koda i svaki programming supervisor će vam taj kod prekrižiti kao neupotrebljiv, što iz konteksta krivog pristupa rješavanju problema što iz razloga održavanja tog koda.
3) Donji primjer je upotrebljiv samo ako je riječ o jednoznamenkastim brojevima. Za sve ostalo će korisniku dati krivi rezultat.
Hvala na komentarima ali niste supervisor niti moderator...ako primejri ne valjaju neka mi to moderatori kažu.
Niti komentiram vaše primjere niti mi je namjera to ispravljati ,a svakako o metodama učenja ne želim raspravljati jer smo
jednu oveću raspravu imali ,ako mi moderatori kažu da u bilo čemu griješim ili mi je krivi pristup, neka mi na to
ukažu oni a ne vi koji ste cijenjeni autor knjga o c++(koje su odlične)...a naravno niti ću se ja doticati vaših objašnjenja a molio
bih da se ne dotičete vi mojih osim ako ne funkcioniraju.Onaj tko želi razumjeti naše primjere će se i potruditi i sam neke stavri
zaključiti.Svatko učenju drugačije pristupa.
Hvala na komentarima ali niste supervisor niti moderator...ako primejri ne valjaju neka mi to moderatori kažu.
Niti komentiram vaše primjere niti mi je namjera to ispravljati ,a svakako o metodama učenja ne želim raspravljati jer smo
jednu oveću raspravu imali ,ako mi moderatori kažu da u bilo čemu griješim ili mi je krivi pristup, neka mi na to
ukažu oni a ne vi koji ste cijenjeni autor knjga o c++(koje su odlične)...a naravno niti ću se ja doticati vaših objašnjenja a molio
bih da se ne dotičete vi mojih osim ako ne funkcioniraju.Onaj tko želi razumjeti naše primjere će se i potruditi i sam neke stavri
zaključiti.Svatko učenju drugačije pristupa.
Hvala na komentarima ali niste supervisor niti moderator...ako primejri ne valjaju neka mi to moderatori kažu.
Niti komentiram vaše primjere niti mi je namjera to ispravljati ,a svakako o metodama učenja ne želim raspravljati jer smo
jednu oveću raspravu imali ,ako mi moderatori kažu da u bilo čemu griješim ili mi je krivi pristup, neka mi na to
ukažu oni a ne vi koji ste cijenjeni autor knjga o c++(koje su odlične)...a naravno niti ću se ja doticati vaših objašnjenja a molio
bih da se ne dotičete vi mojih osim ako ne funkcioniraju.Onaj tko želi razumjeti naše primjere će se i potruditi i sam neke stavri
zaključiti.Svatko učenju drugačije pristupa.
Niti želim niti hoću prihvatiti tebe kao svog supervisora ,naravno da je sve što radiš cijenim ali ne moraš mene upućivati u
načine učenja i dubine c++-a.Imam svoje mišljenje i dovoljno znanja za sebe u c++-u iako je skromnije nego tvoje jer si samouvjeren u
znanju i predaji c++-a ali ne osporavaj drugima da uče ili pišu kako žele.To možeš tamo gdje predaješ ili pišeš knjige.
Na netu ima dosta izvora koji pružaju lijepo znanje iz c++-a.Ako sam pogriješio što sam otvorio ovu temu o c++ opet napominjem
neka me moderatori makni ili kažu da maknem sve pa piši svoje tutove ,a ja niti sam nečije programe komentirao niti ih usmjeravao
niti bilo što previše komentirao jer mi to nije namjera.U svakom slučaju niti znaš tko sam, niti sam ti nisi veliki i jedini autoritet u c++-u.
U c++-u svakako jesi jedan od ali ne i jedini autoritet.
Ima onih koji će se slagati sa mnom ali i onih sa tobom.Ne želim više uopće raspravu gurati dalje a niti mi to treba u životu.
Stoga sam komentiraj sve neka ti je sa srećom u svakom smislu.
Niti želim niti hoću prihvatiti tebe kao svog supervisora ,naravno da je sve što radiš cijenim ali ne moraš mene upućivati u
načine učenja i dubine c++-a.Imam svoje mišljenje i dovoljno znanja za sebe u c++-u iako je skromnije nego tvoje jer si samouvjeren u
znanju i predaji c++-a ali ne osporavaj drugima da uče ili pišu kako žele.To možeš tamo gdje predaješ ili pišeš knjige.
Na netu ima dosta izvora koji pružaju lijepo znanje iz c++-a.Ako sam pogriješio što sam otvorio ovu temu o c++ opet napominjem
neka me moderatori makni ili kažu da maknem sve pa piši svoje tutove ,a ja niti sam nečije programe komentirao niti ih usmjeravao
niti bilo što previše komentirao jer mi to nije namjera.U svakom slučaju niti znaš tko sam, niti sam ti nisi veliki i jedini autoritet u c++-u.
U c++-u svakako jesi jedan od ali ne i jedini autoritet.
Ima onih koji će se slagati sa mnom ali i onih sa tobom.Ne želim više uopće raspravu gurati dalje a niti mi to treba u životu.
Stoga sam komentiraj sve neka ti je sa srećom u svakom smislu.
ima tip pravo.... nemozes ljude ucit krivo.... pogotovo ne krivim principima, jer se oni najteze ispravljuju....
napravio si gresku, i ok... svi grjesimo. To ne znaci da znas manje ili vise...
Ali onda je red da ju priznas i ispravis, pogotovo prije nego sta netko krivo nauci iz nje... jer cak i ja koji znam jako malo u usporedbi sa nekima ovdje mogu rec da ti kod nije dobar...
Evo nesto me nagnalo da i ja ubacin svoj komentar.
Kako svaka lola ima forum tako ni najveca (dalje u tekstu Bug) nije mogla dopustit da ga nema.
Da vas ne davin puno, registriran sam na forumu samo zato sto sam citatelj i stovatelj Buga i beskrajno me zabavlja kritiziranje drugih (kritiku na svoj racun neznan primit i odma se namusin ).
Samo san ceka kad ce krenit s temama: od igle do lokomotive, nastavi pricu, c++ u 9 dana i naravno neizbjezno - gdje sam bio na moru.
Malo san se zanija pa da se vratin na bit, da ne buden IT (izvan teme).
Eto, kako me magicno privlaci c++ kojeg sam doduse "zamjenio" meni isplativijim jezicima odlucija san virnit u temu kad san vidija naslov. Pa krenem iz pocetka, bl bla... dosadno, bla bla, ... vec vidjeno 100 puta, bla bla ....skolski primjeri sa promjenjenim komentarima i print linijama.... i tako malo po malo dodjem do zanimljivog dijela na kraju - napokon je neko odlucija reci nesto narcisoidnom autoru koji ocito ima mnogo kopi-pejst vrlina.
Kako vidim obojica su vec ispucala svoje "uljudne" argumente pa je za ocekivati drvlje i kamenje, pogotovo od strane naseg dobrocinitelja-pokretaca teme.
I za kraj bit cu toliko slobodan da svim ljubiteljima c++ ili onima koji ga moraju ucit predlozim jednu ideju. Umisto da platite jedan misec internet, uclanite se u obliznju knjiznicu. Sigurno cete pronaci velik izbor kvalitetnih knjiga o c++ programiranju, a moran priznat da me najvise odusevila knjiga "Demistificirani C++". Pitka, zabavna, a u srzi problematike pa je stoga najtoplije preporucan. Ako ga ne zavolite ni nakon demistifikacije ostavite se c++
neka me moderatori makni ili kažu da maknem sve pa piši svoje tutove ,a ja niti sam nečije programe komentirao niti ih usmjeravao
Ok,hvala na upozorenjima,sigurno nisam ništa loše mislio niti sam koga htio uvrijediti.Pozdrav.
Aaa momci,podsjećate me na dane iz faxa i ovih problema. Zanimljivi problemi i kodovi. Samo naprijed!
Da, baš ste super svi koji pljujete po v_maxcpp. Mislim čovjek se je bar potrudio napisati nešto i meni je dosta pomogao za razliku od ovih koji su sad "pametni". Sad će me vjerojatno popljuvati ali meni su pomogli tutovi v_maxcpp, a ne vaša prepucavanja na kraju tuta....
Svaka čast svima ali v_maxcpp thumbs up...
Respect
Da, baš ste super svi koji pljujete po v_maxcpp. Mislim čovjek se je bar potrudio napisati nešto i meni je dosta pomogao za razliku od ovih koji su sad "pametni". Sad će me vjerojatno popljuvati ali meni su pomogli tutovi v_maxcpp, a ne vaša prepucavanja na kraju tuta....
Svaka čast svima ali v_maxcpp thumbs up...
Respect
Opet off-topic. Mislim da se na ovoj temi reklo sto se imalo za reci pa je zakljucavam.