Pozdrav, ja sam Ruđerovac i završio sam na popravnom iz računalstva kod profesora Nadarevića (2. godina)
Na prvom popravnom roku smo imali neke zadatke koje nismo radili uopce niti smo radili njima slicne zadatke. Normalno nas 11, koliko nas je kod njega na popravnom, svi smo pali na prvom roku.
Ja vjerujem da sam se ja najviše tamo istaknuo jer sam prije tog popravnog roka proveo barem 50h za stolom i ispisivao zadatke iz C++
Nezelim past razred zbog jednog predmeta, prvi put sam na popravnom u zivotu :/
Uglavnom moje pitanje je sljedece...dali bi itko znao rijesiti ovaj zadatak:
Upisi 5 cijelih i decimalnih brojeva u polje A, u polje B ispisuj drugi korijen cijelog parnog dijela decimalnog broja
Koliko sam ja shvatio treba napravit ovo:
1. upisati 5 cijelih i decimalnih brojeva u polje A
2. ispitati dali je broj decimalan
3. ako je broj decimalan ispisati dali je cijeli dio decimanog broja paran broj
4. ako je cijeli dio decimalnog broja paran izračunati drugi korijen i ispisati ga u polje B
Ja sam napravio ovo ali mi neradi pa pokušajte naći grešku ili rješite iznova zadatak ali morate ga riješiti sa poljima, i u sklopu onoga sto se uci u drugom razredu :)
http://pastebin.com/2FQ87SJL
P.S. znam da fali u zadatku koji sam napravio #include<math.h>
Probaj ovo..
#include <stdio.h>
#include <math.h>
int main() {
float a[5], b[5];
int i, brojac_b = 0;
for (i = 0; i < 5; i++) {
printf("\n upisi %d. broj: ", i + 1);
scanf("%f", &a[i]);
// ako je decimalni
if(a[i] - (int)a[i] != 0){
// ako je cijeli dio decimalnog broja paran
if((int)a[i] % 2 == 0)
b[brojac_b++] = sqrt((int)a[i]);
}
}
// ispis b polja
for (i = 0; i < brojac_b; i++)
printf("%.3f\n", b[i]);
return 0;
}
Inače, imaš gore temu posvećenu samo C++ problemima. Nema potrebe otvarati novu za svaki novi zadatak.
Baš kad sam napisao, vidio sam da je @Tracer već stavio, ali ajde, kad je već tu, stavit ću, mada nema potrebe.
Zašto si deklarirao nizove a i b različite veličine, kad u krajnjem slučaju mogu biti iste duljine.
Još jedna greška, unosiš niz a, a ispituješ prazan niz b.
#include<stdio.h>
#include<math.h>
int main()
{
double A[5];
double B[5];
int brojac = 0, i;
for(i = 0; i < 5; i++)
{
scanf("%lf", &A[i]);
if(A[i] != (int)A[i] && (int)A[i]%2 == 0)
B[brojac++] = pow((int)A[i], 0.5);
}
for (int i = 0; i < brojac; i++)
printf("%lf ", B[i]);
return 0;
}
Edit. Ispričavam se, moja greška što sam previdio činjenicu da treba parne decimalne, a ne cijele filtrirati. Ovo je ispravljena verzija.
Mozes mi pojednostaviti to ?
Nerazumijem zasto su stavio "%If" u scanf-u, nikada to nismo radili
i nerazumijem "B[brojac++]" cemu to sluzi ?
Rijesite mi to sa znanjem drugog razreda, tek sam ove godine poceo raditi c++ i dosli smo do lekcije polja
ja nemogu znati ono sto se uci tijekom 3 i 4 razreda srednje niti ono sa faxa tako da rijesite sto jednostavnije mozete, hvala!
Mozes mi pojednostaviti to ?
Nerazumijem zasto su stavio "%If" u scanf-u, nikada to nismo radili
i nerazumijem "B[brojac++]" cemu to sluzi ?
B[brojac++] ide po indexima polja B, vidiš da je gore brojac postavljen na nulu, pa se svaki put inkrementira ito tako da prvo index bude trenutno stanje brojaca pa se onda inkrementira, da je ++brojac, prvo bi se inkrementiralo pa onda bi to bio index polja.
i nerazumijem "B[brojac++]" cemu to sluzi ?
Rijesite mi to sa znanjem drugog razreda, tek sam ove godine poceo raditi c++ i dosli smo do lekcije polja
Učili ste polja kažeš. E onda znaš da se za pristup pojedinim elementima polja koristi [] operator (operator subsripta). Taj operator traži neki broj koji će biti upotrijebljen kao indeks elementa kojeg tražiš.
Dakle:
polje[3] će ti dati četvrti element (prvi element ima indeks 0)
polje[0] će ti dati prvi element itd...
Kao brojčanu vrijednost tom operatoru možeš proslijediti bilo koji izraz koji za rezultat daje cijeli broj. Dakle ovo:
polje[15 * 3 + 8] je potpuno prihvatljivo, kao i:
polje[y * width + x] ili:
polje [1 + 3]
A postfiks i prefiks inkrement i dekrement operatore (ono i++, n--, ++c) ste valjda već učili i znaš što rade...
Zar niste malo zakomplicirali dečku stvar? Osim toga, ti "printfovi" nisu baš u duhu C++-a, nego iz C-a. Uvodite mu nepotrebnu konfuziju modifikatorima, a i kod je vizualno kompliciran:
#include <iostream>
#include <vector>
#include <math.h>
int main(int argc, const char * argv[])
{
std::vector<float> a {4.34, 45, 21, 13.21, 9.9};
std::vector<float> b(0);
for(auto i : a){
((int)i%2==0) ? b.push_back(sqrt((int)i)) : b.push_back(sqrt((int)(i-1)));
}
for(auto i : b){
std::cout << i << std::endl;
}
return 0;
}
Zar niste malo zakomplicirali dečku stvar? Osim toga, ti "printfovi" nisu baš u duhu C++-a, nego iz C-a. Uvodite mu nepotrebnu konfuziju modifikatorima, a i kod je vizualno kompliciran:
#include <iostream>
#include <vector>
#include <math.h>
int main(int argc, const char * argv[])
{
std::vector<float> a {4.34, 45, 21, 13.21, 9.9};
std::vector<float> b(0);
for(auto i : a){
if((int)i%2==0) b.push_back(sqrt((int)i));
}
for(auto i : b){
std::cout << i << std::endl;
}
return 0;
}
1. ovo ti ne rješava zadatak
2. tražio je C i nizove, a ne C++ i vektore, nismo mi stavili biblioteku stdio.h u header nego on
Zar niste malo zakomplicirali dečku stvar? Osim toga, ti "printfovi" nisu baš u duhu C++-a, nego iz C-a. Uvodite mu nepotrebnu konfuziju modifikatorima, a i kod je vizualno kompliciran
Prvo pogledaj njegov code koji je priložen u prilogu. On je taj koji i koristi "printfove" i C nizove.
I vektori u tvom rješenju sigurno nisu za 2. srednje, a da ne spominjem oblik for petlje. C++11 feature-i još uopće nisu podržani na svim C++ compilerima, a kamoli da se uče u školi (i to u 2. srednje).
Pozdrav, ja sam Ruđerovac......
...
... zadatke iz C++
...
Upisi 5 cijelih i decimalnih brojeva u polje A, u polje B ispisuj drugi korijen cijelog parnog dijela decimalnog broja
....
2. tražio je C i nizove, a ne C++ i vektore, nismo mi stavili biblioteku stdio.h u header nego on
1. Zadatak je riješen. Što to nije riješeno?
1. Aha, mislim da znam što ne rješava. :) Eno, sad rješava.
2. Piše o C++-u i tema se zove C++, a i sam ga spominje.
Zar niste malo zakomplicirali dečku stvar? Osim toga, ti "printfovi" nisu baš u duhu C++-a, nego iz C-a. Uvodite mu nepotrebnu konfuziju modifikatorima, a i kod je vizualno kompliciran
Prvo pogledaj njegov code koji je priložen u prilogu. On je taj koji i koristi "printfove" i C nizove.
I vektori u tvom rješenju sigurno nisu za 2. srednje, a da ne spominjem oblik for petlje. C++11 feature-i još uopće nisu podržani na svim C++ compilerima, a kamoli da se uče u školi (i to u 2. srednje).
A može on svašta koristiti, ali ne znači da je to točno. Prvo, mislio sam da je na institutu Ruđer... malo mi je bilo čudno, doduše, ali žurio sam pa... C++11 je već neko vrijeme standard, a to što ih nema na svim kompajlerima, a Bože moj, nema ni u svakom selu struje.
No, za drugi srednje je možda nezgodno ako je profesor u godinama, ali ne vidim zašto bi vektori bili problem? Nije to neka filozofija. Dapače, mnogo su lakši za taj uzrast.
Haha, jel ti to malo Tonci njih trolas? Vektori, inicijalizacijske liste kod vektora, auto... Zaboravio si to napisati u OO stilu. xD
A decko je tek na poljima.
Kad bolje razmislim, uopće se ne želim upuštati u ove filozofske rasprave jer već znam kako će to biti.
Jedan profesor da nema volje raspravljati o metodologiji podučavanja i gradivu koje se podučava?
Imaj na umu da je C++11 ISO standard, a kao takav i preporučen za korištenje umjesto dosadašnjih, da GCC 4.8.1 i Clang 3.3 podržavaju standard u potpunosti, da će ga i Intel uskoro potpuno podržavati. C++11 je mnogo bolji jezik od C++98 standarda i mnogo prikladniji za učenje i edukaciju novog naraštaja programera.
No, obrazovni sustav nam puca po šavovima pa me ne bi čudilo da se u školi radi na VC++ kompajleru iz 2005. i da se profesoru "baš ne da učiti, a kamoli predavati C++11 pred penziju".
Jedan profesor da nema volje raspravljati o metodologiji podučavanja i gradivu koje se podučava?
O čemu se tu ima raspravljati? Srednjoškolski profesor ima nastavni plan i program koji mu je zadan od strane ministarstva, a ako nije sposoban (nema znanje) da ga odradi onda neka dade otkaz.
Isto tako, C++11 je super i tu nemam zamjerki, ali nije još uvijek dovoljno pristupačan svima da bi ga se moglo masovno koristiti.
Kad bolje razmislim, uopće se ne želim upuštati u ove filozofske rasprave jer već znam kako će to biti.
Zašto? Pa ne jedeš druge, a ni oni tebe? Šta fali raspravi, pa to i jeste cilj foruma - da se nešto nauči. Mi sa manje iskustva, iz rasprava vas starijih, možemo samo naučiti poenšto.
ne bi čudilo da se u školi radi na VC++ kompajleru iz 2005.
To bi bilo odlično, na žalost iz iskustva znam da se koristi i danas TurboC++ iz sredine devedesetih, te starije verzije DevC++a. To za profesore si itekako u pravu, ne žele ulagati u svoje znanje, te se samo drže plana i programa.
Meni je Tončijevo rješenje odlično. Baš lijepo vidjeti onakav kôd, unosi nekakav dašak svježine u C++. :)
Ma da, ima, nažalost zadan program. Nego, zar nije GCC besplatan, recimo? Dostupnost je apsolutna. Problem je što nema agilnosti i volje...
Ma da, ima, nažalost zadan program. Nego, zar nije GCC besplatan, recimo? Dostupnost je apsolutna. Problem je što nema agilnosti i volje...
Meni je GCC pod linuxom bio sasvim ok. Ali po običaju, ako sam išta htio naučiti morao sam to sam, jer mi je programiranje predavao čovjek koji je diplomirao fiziku, i više sam ja njega učio (čitaj: ispravljao) nego on mene.
Isto tako na jednom fakultetu kojeg neću imenovati za asistenta iz "osnova elektrotehnike" se javio čovjek s diplomom iz ekonomije s tekstom molbe "nemam iskustva u elektrotehnici ali sam voljan naučiti". Kad se i iz srednjih škola uklone takvi kadrovi onda će i kvaliteta nastave biti bolja.
To ti ja i kažem...
To ti ponovno ne radi, kad ga napišeš ispravno, vidjet ćeš da je jednako "vizualno kompliciran".
To ti ponovno ne radi, kad ga napišeš ispravno, vidjet ćeš da je jednako "vizualno kompliciran".
No, daj pojasni što ne radi?
Edit. Ispričavam se, moja greška što sam previdio činjenicu da treba parne decimalne, a ne cijele filtrirati. Ovo je ispravljena verzija.
Misliš na ovo što si sinoć zaključio?
To ti ponovno ne radi, kad ga napišeš ispravno, vidjet ćeš da je jednako "vizualno kompliciran".
No, daj pojasni što ne radi?
Zadatak je da za parni dekadski dio decimalnog broja izvadiš korijen i staviš ga u drugi niz.
Ti sve brojeve stavljaš u drugi niz, i cijele i decimalne , s tim da neparni dekadski dio ili neparni cijeli umanjuješ za 1.
Uostalom, evo ti slika, pa se sam uvjeri, i ti i oni što mi bez veze tovare minuse.
Vektor sam inicijalizirao sa push_back jer u VS 2012 ne mogu inicijalizirati vektor sa vitičastim zagradama.
Da, u pravu si za zadatak; treba ga pažljivo pročitati. Mislim da sad jesam: zapravo zadatak traži da u b polje idu samo drugi korijeni cijelih parnih dijelova decimalnih brojeva, dakle da se cijele brojeve ignorira i da se uzme samo parni cijeli dio decimalnih.
Mislim da je moj kod i dalje lakše čitati:
#include <iostream>
#include <vector>
#include <math.h>
int main(int argc, const char * argv[])
{
std::vector<float> a {4.34, 45, 21, 13.21, 9.9};
std::vector<float> b(0);
for(auto i : a){
if(rintf(i)!=i){
((int)i%2==0) ? b.push_back(sqrt((int)i)) : b.push_back(sqrt((int)(i-1)));
}
}
for(auto i : b){
std::cout << i << std::endl;
}
return 0;
}
pa napravi ispravan najprije, pa ćemo vidjeti što je lakše čitati
Pozdrav evo mene u vezi onog zadatka iz c++
Ja sam još srendnjoškolac, 2. godina, ovo sto si napisao jos uvijek mi je nepoznato.
Ako mi mozes jos napraviti zadatak ovdje u inbox sad cu ti reci sta da promijenis :)
ispod if-a:
"B[brojac++]=pow((int)A[i], 0.5);" ovdje nista nerazumijem tj nismo nista od ovoga ucili, nikada nismo stavljali B[brojac++], zasada smo uvijek stavljali broj npr. B[5] ili B[i]. Onda ova naredba pow, pretpostavljam da je ovo power ali nismo ucili tu naredbu i nerazumijem onih ", 0.5" na kraju.
nerazumijem jos nekoliko stvari:
"scanf("%If", A[i]);" Ovdje nerazumijem ovaj "%If", dali je to isto kao "%f" kao float ?
Nemoj mi rijesavati zadatak sa double, nismo nikada radili sa tim samo smo ucili cemu sluzi !
nerazumijem ovaj zadnji for, zasto si stavljao "int" unutra prije svega ?
Ako mozete sve navedeno popraviti/promijeniti, ovo vase je ko da mi dajete test iz mature a tek sam 2. razred zavrsio XD
Ako mozes molim te to napravi u sklopu znjanja srednje skole,2. godine, c++ ucim tek od ove godine !
Hvala unaprijed !!!
Molim te rijesi taj zadatak kao da si tek pocetnik u c++ jer cu jedino tako znati o cemu se radi, ovo je ocitno rijeseno kao da ucis c++ godinama :)
pa napravi ispravan najprije, pa ćemo vidjeti što je lakše čitati
Tvoj kod ne valja:
#include<stdio.h>
#include<math.h>
int main()
{
double A[5];
double B[5];
int brojac = 0, i;
for(i = 0; i < 5; i++)
{
scanf("%lf", &A[i]);
if(A[i] != (int)A[i] && (int)A[i]%2 == 0)
B[brojac++] = pow((int)A[i], 0.5);
}
for (int i = 0; i < brojac; i++)
printf("%lf ", B[i]);
return 0;
}
Za niz:
{4.34, 45, 21, 13.21, 9.9}
izbacuje samo jedan rezultat, 2 za prvi broj, što je pogrešno jer zadatak kaže:
Upisi 5 cijelih i decimalnih brojeva u polje A, u polje B ispisuj drugi korijen cijelog parnog dijela decimalnog broja
Nakon što upišeš 5 brojeva, cijelih ili decimalnih, u polje B vraćaš rezultate ako ti brojevi zadovoljavaju uvijet da su:
- decimalni
A zatim kao rezultat vraćaš drugi korijen "cijelog parnog dijela", što znači da ćeš rezultate imati samo za decimalne brojeve, u suprotnom uvjet "cijelog parnog dijela decimalnog broja" ne možeš ispuniti. Nadalje, nigdje ne piše da u polje B upisuješ "drugi korijen cijelog parnog dijela parnog decimalnog broja", nego drugi korijen cijelog parnog dijela decimalnog broja, što nije isto. Iz toga slijedi da ni Tracerovo rješenje nije točno.
Ako izbacimo 45 i 21 iz gornjeg niza u primjeru, imamo 4,34 13.21 i 9.9, što su 3 decimalna broja. Cijeli parni dio prvog je 4, cijeli parni dio drugog je 12, cijeli parni dio trećeg je 8.
Zadatak možda jest glupo postavljen i možda je trebalo pisati:
Upisi 5 cijelih i decimalnih brojeva u polje A, u polje B ispisuj drugi korijen cijelog dijela decimalnih brojeva čiji je cijeli dio parni.
što ima potpuno drugačije značenje.
U tom slučaju i dalje mislim da je ljepše:
int main(int argc, const char * argv[])
{
std::vector<float> a {4.34, 45, 21, 13.21, 9.9};
std::vector<float> b(0);
for(auto i : a){
if(rintf(i)!=i){
if ((int)i%2==0) b.push_back(sqrt((int)i));
}
}
for(auto i : b){
std::cout << i << std::endl;
}
return 0;
}
nego:
int main()
{
double A[5];
double B[5];
int brojac = 0, i;
for(i = 0; i < 5; i++)
{
scanf("%lf", &A[i]);
if(A[i] != (int)A[i] && (int)A[i]%2 == 0)
B[brojac++] = pow((int)A[i], 0.5);
}
for (int i = 0; i < brojac; i++)
printf("%lf ", B[i]);
return 0;
}
Čak mi nije ni jasno što su mu u zadatku trebali ovi "cijeli brojevi", jer je zadatak mogao glasiti da "Izračuna drugi korijen cijelog dijela svih decimalnih brojeva čiji je cijeli dio parni".
Inače, Tracerov je kod mnogo bolji. Što će pow?
Tonci isao trollat i na kraju ga zatrollalo :P
Tonci isao trollat i na kraju ga zatrollalo :P
Ne vidim kako, kad imam pravo. :)
Ljudi molim vas samo rijesite taj zadatak, sve sam opisao, samo se sjetite kako ste to rijesavali dok ste bili u srednjoj skoli, ovo sto rijesavate nacinima sa fakulteta mi je nepoznati i iskreno to trenutno nemoram ni znati :)
Taj zadatak mi treba hitno!