Evo trebao bih netkog da mom prijatelju ivanho preporuči neke lagane zadatke za programiranje u C++. Pošto se on boji napravit temu ja sam morao.
Valjda će vam se javiti.
Programiranje u C++ (lagani zadaci)
- poruka: 57
- |
- čitano: 57.904
- |
- moderatori:
Lazarus Long, XXX-Man, vincimus
Ma ja sam novi na forumu tek se upoznajem s pravilima pa necu bezveze raditi novu temu.
Nisam ja dugo na forumu kao i ti Ferritin
Evo, kada je tema već otvorena zanima me gdje bi mogao na netu naći zadatke za početnike u C-u ili C++-u.
Pogledaj za lagane zadatake i rješene zadatke iz programiranja u C na http://www.mojwebdizajn.net/c-rijeseni-zadatci/c-programiranje-rijeseni-zadatci-1.aspx Nadam se da ćeš naći barem nešto za sebe.
Stara stranica sa zadatcima na racunalstvo.net više ne radi.
Pogledaj za lagane zadatake i rješene zadatke iz programiranja u C na http://www.racunalstvo.net/rijeseni-zadatci/rijeseni-zadatci-iz-c-programiranja . Nadam se da ćeš naći barem nešto za sebe
Kada stisnem na zadatke javlja mi nekakvu grešku.
Meni je su u Operi linkovi ok. Linkovi na zadatke su zeleni brojevi a ispod su brojevi linkova na riješene zadatke. Ako je i dalje greška napiši koju poruku javlja.
Meni je su u Operi linkovi ok. Linkovi na zadatke su zeleni brojevi a ispod su brojevi linkova na riješene zadatke. Ako je i dalje greška napiši koju poruku javlja.
Sad sam i ja otvorio s Operom i radi, a prije sam otvarao s Explorerom i nije radilo.
Hvala na linku.
evo da ne otvaram novu temu:
vidjeh ovdje neke zadatke između kojih je i: napiši program koji traži unos 3 broja i zatim računa zbroj svaka dva od njih. znam da je full jednostavno, ali tek sam jučer počeo raditi išta od programiranja pa mi oprostite :)
radi se o C-u i zanima me što je ovdje pogrešno?
#include <stdio.h>
#include <conio.h>
int main(void)
{
int a,b,c,z1,z2,z3;
printf ("unesite 3 broja:\n");
scanf("%d\n%d\n%d\n", &a, &b, &c);
z1=a+b;
z2=a+c;
z3=b+c;
printf("%d\n%d\n%d\n", z1, z2, z3);
getch();
}
Hvala :)
evo da ne otvaram novu temu:
vidjeh ovdje neke zadatke između kojih je i: napiši program koji traži unos 3 broja i zatim računa zbroj svaka dva od njih. znam da je full jednostavno, ali tek sam jučer počeo raditi išta od programiranja pa mi oprostite :)
radi se o C-u i zanima me što je ovdje pogrešno?
#include <stdio.h>
#include <conio.h>
int main(void)
{
int a,b,c,z1,z2,z3;
printf ("unesite 3 broja:\n");
scanf("%d\n%d\n%d\n", &a, &b, &c);
z1=a+b;
z2=a+c;
z3=b+c;
printf("%d\n%d\n%d\n", z1, z2, z3);
getch();
}
Hvala :)
Prije svega kad postaš kod na forum koristi stil za kod.
U tvojoj naredbi:
scanf("%d\n%d\n%d\n", &a, &b, &c);
Izostavio bih ovo \n zato što stavljajući ovo između upisivanja varijabli zahtijeva od korisnika da kad unosi brojeve da odmah kad unese broj, da pritisne enter odnosno pređe u novi red. Ako korisnik ne bi tako postupio onda bi došlo do problema. Zato je najbolje ostaviti bez toga i onda je svjedeno kako korisnik unosi podatke(bilo stavljanjem razmaka ili prelaskom u novi red):
scanf("%d%d%d", &a, &b, &c);
I najgora greška koju radiš je to što si zaboravio na kraju funkcije int main odnosno odmah iza one zatvorene vitičaste zagrade staviti naredbu:
return 0;
Ta naredba se mora staviti jer njom daješ do znanja da je program završio sa radom.
Prije svega kad postaš kod na forum koristi stil za kod. Prva greška koju radiš je:
int main(void)
Iako ovo nije baš pogrešno ipak je puno bolje ostaviti zagradu praznu ako već ne želiš stavljati argumente:
int main()
int main(void) uopce nije pogresno.
http://faq.cprogramming.com/cgi-bin/smartfaq.cgi?id=1043284376&answer=1044841143
Tocan nacin da se kompajleru kaze da funkcija ne prima nikakve argumente je koristenjem void keyworda unutar zagrada. No, kako u praksi nema nikakve razlike ako se unutar tih zagrada ne stavi nista, tada se "void" keyword moze i izostaviti.
Detaljnije o nacinu kako se argumenti proslijeduju kod poziva funkcija mozes naci ovdje:
http://en.wikipedia.org/wiki/X86_calling_conventions
Tu se vidi zasto "int main(void)" i "int main()" ne cini nikakvu razliku u generiranom kodu.
Ali ako pokusas funkciju koja nije definirana tako da ne prima argumente, pozvati sa argumentima, kompajler ce ti to dozvoliti (zato sto prazna zagrada kod funkcije oznacava da funkcija prima neodreden broj argumenata):
#include <stdlib.h>
#include <stdio.h>
void funkcija()
{
printf("Ovo je neka funkcija\n");
return;
}
int main()
{
int a=3;
int b=4;
int c=a+b;
funkcija(a, b, c);
return 0;
}
A probaj sada ovo kompajlirati:
#include <stdlib.h>
#include <stdio.h>
void funkcija(void)
{
printf("Ovo je neka funkcija\n");
return;
}
int main()
{
int a=3;
int b=4;
int c=a+b;
funkcija(a, b, c);
return 0;
}
Kompajler ce se zaliti da si pozvao funkciju sa previse argumenata.
Još nešto bitnije od ispravljanja ovih sitnih greškica (svi smo ih kao početnici činili, ništa strašno) jest to da se na samom početku naučiš raditi jasan i robustan kod koji se ne ponavlja.
Dakle, obzirom na cilj zadatka, ovdje su varijable z1, z2 i z3 nepotrebne (te varijable ti u daljnjem radu programa nigdje ne trebaju, a u ptintf funkciji možeš dobiti željene zbrojeve na ovaj način).
#include <stdio.h>
#include <conio.h>
int main()
{
int a,b,c;
printf ("unesite 3 broja:\n");
scanf("%d%d%d", &a, &b, &c); // unosiš varijable sa tipkom space npr. 5 space 3 space 4 enter
printf("%d\n%d\n%d\n", a+b, a+c, b+c);
getch();
return 0;
}
#include <iostream>
using namespace std;
class SimpleCat
{
public:
SimpleCat();
SimpleCat(SimpleCat&);
~SimpleCat();
int GetAge()const{return itsAge;}
void SetAge(int age) {itsAge = age;}
private:
int itsAge;
};
SimpleCat::SimpleCat() //simplecat konstruktor
{
cout << "Simple Cat konstruktor!!" << endl;
itsAge = 1;
}
SimpleCat::SimpleCat(SimpleCat&) //simplecat copy konstruktor
{
cout << "Simple Cat copy konstruktor!!!" << endl;
}
SimpleCat::~SimpleCat() //Simplecat destruktor
{
cout << "Simple Cat destruktor!!!!" << endl;
}
const SimpleCat* const FunctionTwo(const SimpleCat * const theCat);
int main()
{
cout << "Making Cat..." << endl;
SimpleCat Frisky;
cout << "Frisky is " << Frisky.GetAge() << " years old." << endl;
int age = 5;
Frisky.SetAge(age);
cout << "Frisky is " << Frisky.GetAge() << " years old." << endl;
cout << "Poziv na funkciju FunctionnTwo..." << endl;
FunctionTwo(&Frisky);
cout << "Frisky is " << Frisky.GetAge() << " years old." << endl;
return 0;
}
//functionTwo, predaje const pokazivac
const SimpleCat* const FunctionTwo (const SimpleCat* const theCat)
{
cout << "FunctionTwo. Returning..." << endl;
cout << "Frisky is now " << theCat->GetAge() << " years old." << endl;
return theCat;
}
Moze iko ako nije zao vam vremena pojasnit mi dio po dio reda zeleno oznacenog? nikako mi nije jasno sto i zasto... hvala unaprijed!
To je samo prototip funkcije koju imaš dole. Funkcija prima konstanti pointer a zatim taj isti vraća kao povratnu vrijednost.
const SimpleCat * const FunctionTwo(const SimpleCat* const theCat);
ovo mene zanima u tom slucaju sta je sta:
const SimpleCat*->? pokazivac na objekt simplecat?
const FunctionTwo->? ime funkcije?
const SimpleCat*->??? |
const theCat->??? | ovo dvoje mi nije jasno uopce
Ako sam uopce dobro odredio pokazivace...
const znam da oznacava da se radi o konstanti.
jebiga, nisam se bio dobro izjasnio
i hvala za odgovor
U deklaraciji funkcije ti je sve što trebaš ,tracer ti je ukratko sve objasnio .....ime funkcije koja prima pokazivač theCat i vraća pokazivač..prema tome "ona dva" što ti nisu jasna
const SimpleCat* : to je znači tip koji si stavio za povratnu vrijednost kao i tip što ta tvoja funkcija prima kao parametar
const theCat je samo ime pokazivaču koje si dao i preko njega pristupaš objektima
U svakom programu dakle kad deklariraš nešto sa strogo određenim tipovima to se mora ispoštovati pa tako i u tvojoj funkciji ...probaj nešto izmjeniti ...pogledaj koju grešku javlkja i tako nse može učiti da vidiš koju grešku ti javlja i kakve je vrste ta greška .Ako ti netko hoće detaljnije objašnjavati neka objašnjava ali deklariranje pokazivača i rad sa memorijom bi trebao dobro proučiti i sve bi ti bilo jasno .
Jedini link koji ce ti trebat za ucenje programiranja (za zadatke, ne tutoriale) je: http://www.z-trening.com/
Napravi account, i rjesavaj, on ti sam evaulira i odlicno radi!
nije losa stranica... zadaci su zbunjeni do jaja
treba 20 puta procitat da skuzis sta od tebe hoce
smijalica
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n, i, pola = 0, cetvrt = 0, triCetvrt = 0, ukP;
string br;
float brCetvrt, brPola, brTriCetvrt, uk; //ne radi uk :/ zbog modulo(%)...zasto?
cin >> n;
if(n>0 && n<=10000)
{
for(i=0 ; i<n ; i++)
{
cin >> br;
if(br == "1/4") cetvrt++;
if(br == "1/2") pola++;
if(br == "3/4") triCetvrt++;
}
brCetvrt = cetvrt/4; //ili "cetvrt/4"
brPola = pola/2; //ili "pola/2"
brTriCetvrt = 3*triCetvrt/4; //ili "3*triCetvrt/4"
uk = brCetvrt + brPola + brTriCetvrt;
//if(uk%1 == 0) //(ne radi!)Ukoliko nema ostatka uk = ukPica
// uk = ukPica;
//else; cout << uk << endl; //postoji ostatak(trebace jos jedna pica)
ukPica = uk + 1;
}
cout << ukPica;
return 0;
}
sa iskljucenom provjerom ostatka... posto s trazenjem ostatka ne radi
kako je moguce da ako dovedem na ulaz
4
1/2
1/4
1/2
3/4
na izlazu dobijem tocan rezultat?
znaci:
2 [ukPica = (uk=2->trebao bi biti, a nije) + 1 ]???
a u slucaju:
3
1/2
3/4
3/4
izlaz:
2(a trebo bi 3)
nije losa stranica... zadaci su zbunjeni do jaja
treba 20 puta procitat da skuzis sta od tebe hoce
smijalica
Zadaci su vecinom s natjecanja (regularna i HONI). Mozda su ti teski ako si pocetnik, ali trudi se i postat ce ti sasvim normalni i jednostavni.
Pa to je jednostavno:
1. unesi m
2. unesi n
3. unesi mxn brojeva u alocirano polje
4. sumirati sve po stupcima i naći max
5. sumirati sve po retcima i naći max
isprintati.
Malo kasno si se sjetio. Hintovi:
new[] za alokaciju, možeš alocirati jedno polje pa koristiti formuli i * nCols + j ili možeš alocirati dvodimenzionalno.
Petlja for ti je za proći retke/stupce/elemente. Max tražiš indukcijom: uzmeš nulti da je maksimum i tražiš većeg.
new[] za alokaciju, možeš alocirati jedno polje pa koristiti formuli i * nCols + j ili možeš alocirati dvodimenzionalno.
Ili,
int* matrica;matrica=(int*)malloc(m*n*sizeof(int);
Mada je u C++ bolje koristiti konstruktor i destruktor, new i delete.
treba mi pomoc oko zadatka, zadatak je na 7 djelova
dio (pot.h) i (pot.cpp) moram doraditi , nesto mi ne ide.
u pot.h trebam unijeti prevzeti konstruktor, navadni konstruktor, koji su upotrjebljeni u glavnem programu te destruktora, set i get dekleraciju prekrivanja operatora za ispis.
--u pot.cpp trebamo dekleraciju prevzetog, navadneg konstruktora , destruktora i izvedbu prekrivanja operatora za ispis
--- treba jos u razred Pot ubaciti metodu int dolzina() koja bi izracunala put kada bismo putovali ravnim linijama. to izracunamo tako sto prvo izracunamo razliku u vertikalnoj smer(deltaD = razlika zemljepisnih dolžin) i horizontalni smeri (deltaS = razlika zemljepisnih širin). Obe razliki izrazite u zemljepisnih sekundaamaini ubacite ih u formulu
razdalja_v_km = sqrt(9.75 * deltaD^2 + 4.58 * deltaS^2)/100
Trebao si kod ubaciti, tko ce ovako po slikama kontati sta ne valja ili sta fali.
problem je u pot.h i pot.cpp, gore je objesnjenje sta treba uraditi, neznam da li je i to tacno sto sam ja radio u ta dva
--------------------------------------------------------
DATOTEKA: kot.h
--------------------------------------------------------
using namespace std;
class Kot
{
private:
int stopinje;
int minute;
int sekunde;
public:
Kot(); //privzeti konstruktor
Kot(int dd, int mm, int ss); //navadni konstruktor
~Kot(); //destruktor
int getStopinje() {return stopinje;}
int getMinute() {return minute;}
int getSekunde() {return sekunde;}
void setStopinje(int ss) {stopinje = ss;}
void setMinute(int mm) {minute = mm;}
void setSekunde(int ss) {sekunde = ss;}
// Izvedba kopirnega konstruktorja ni potrebna.
// Prekrivanje prireditvenega operatorja ni potrebno.
};
// Prekrivanje operatorja za izpis
ostream& operator<<(ostream& out, Kot k);
--------------------------------------------------------
DATOTEKA: kot.cpp
--------------------------------------------------------
#include <iostream>
#include <iomanip>
#include <string>
#include "kot.h"
using namespace std;
// Privzeti konstruktor
Kot::Kot() {
stopinje = 0;
minute = 0;
sekunde = 0;
}
// Navadni konstruktor
Kot::Kot(int dd, int mm, int ss) {
stopinje = dd;
minute = mm;
sekunde = ss;
}
// Destruktor
Kot::~Kot() {
}
// Prekrivanje operatorja za izpis
ostream& operator<<(ostream& out, Kot k) {
out << k.getStopinje() << " "
<< k.getMinute() << "'"
<< k.getSekunde() << "\"";
return out;
}
--------------------------------------------------------
DATOTEKA: kraj.h
--------------------------------------------------------
#include "kot.h"
using namespace std;
class Kraj {
private:
string ime;
Kot zemljepisnaDolzina;
Kot zemljepisnaSirina;
public:
Kraj(); //privzeti konstruktor
Kraj(string ii, Kot zd, Kot zs); //navadni konstruktor
~Kraj(); //destruktor
string getIme() {return ime;}
Kot getZemljepisnaDolzina() {return zemljepisnaDolzina;}
Kot getZemljepisnaSirina() {return zemljepisnaSirina;}
void setIme(const string ii) {
ime = ii;
}
void setZemljepisnaDolzina(Kot zd) {
zemljepisnaDolzina.setStopinje(zd.getStopinje());
zemljepisnaDolzina.setMinute(zd.getMinute());
zemljepisnaDolzina.setSekunde(zd.getSekunde());
}
void setZemljepisnaSirina(Kot zs) {
zemljepisnaSirina.setStopinje(zs.getStopinje());
zemljepisnaSirina.setMinute(zs.getMinute());
zemljepisnaSirina.setSekunde(zs.getSekunde());
}
// Izvedba kopirnega konstruktorja ni potrebna.
// Prekrivanje prireditvenega operatorja ni potrebno.
};
// Prekrivanje operatorja za izpis
ostream& operator<<(ostream& out, Kraj k);
--------------------------------------------------------
DATOTEKA: kraj.cpp
--------------------------------------------------------
#include <iostream>
#include <iomanip>
#include <string>
#include "kraj.h"
using namespace std;
// Privzeti konstruktor
Kraj::Kraj() {
ime = "";
zemljepisnaDolzina = Kot();
zemljepisnaSirina = Kot();
}
// Navadni konstruktor
Kraj::Kraj(string ii, Kot zd, Kot zs) {
ime = ii;
zemljepisnaDolzina = zd;
zemljepisnaSirina = zs;
}
// Destruktor
Kraj::~Kraj() {
}
// Prekrivanje operatorja za izpis
ostream& operator<<(ostream& out, Kraj k) {
out << k.getIme();
return out;
}
--------------------------------------------------------
DATOTEKA: pot.h
--------------------------------------------------------
#include "kraj.h"
using namespace std;
class Pot {
private:
Kraj* start;
Kraj* via;
Kraj* cilj;
public:
Pot();
Pot(int& st, int& vi, int&ci); //navadni konstruktor
Kraj* getStart() {return start;}
Kraj* getVia() {return via;}
Kraj* getCilj() {return cilj;}
};
--------------------------------------------------------
DATOTEKA: pot.cpp
--------------------------------------------------------
#include <iostream>
#include <iomanip>
#include <string>
#include "pot.h"
using namespace std;
Pot::Pot() {
start = 0;
via = 0;
cilj = 0;
}
Pot::Pot(Kraj& st, Kraj& vi, Kraj& ci) {
start = &st;
via = &vi;
cilj = &ci;
}
--------------------------------------------------------
DATOTEKA: geografija3.cpp
--------------------------------------------------------
#include <iostream>
#include <iomanip>
#include <string>
#include "pot.h"
using namespace std;
int main() {
Kraj krajMaribor("Maribor",Kot(46,33,00),Kot(15,40,00));
Kraj krajCelje("Celje",Kot(46,15,00),Kot(15,16,00));
Kraj krajLjubljana("Ljubljana",Kot(46,04,00),Kot(14,30,00));
Kraj krajKoper("Koper",Kot(45,31,00),Kot(13,44,00));
Kraj krajNovoMesto("Novo Mesto",Kot(45,48,00),Kot(15,10,00));
Kraj krajPtuj("Ptuj",Kot(46,27,00),Kot(15,51,00));
Pot pot1(krajMaribor,krajCelje,krajLjubljana);
Pot pot2(krajMaribor,krajPtuj,krajNovoMesto);
Pot pot3(krajMaribor,krajLjubljana,krajKoper);
cout << "Dolzina poti " << pot1 << " je " << pot1.dolzina() << " km." << endl;
cout << "Dolzina poti " << pot2 << " je " << pot2.dolzina() << " km." << endl;
cout << "Dolzina poti " << pot3 << " je " << pot3.dolzina() << " km." << endl;
cout << "Nasvidenje!" << endl;
}
Ovdje mozete da pronadjete sve programe vezane za c++:http://www.znanje.org/knjige/computer/cpp/n/230cpp/230.htm
Ovdje mozete da pronadjete sve programe vezane za c++:http://www.znanje.org/knjige/computer/cpp/n/230cpp/230.htm
Siguran da baš sve?
ima li iko da zna dobro programiran je u C++
p
I po milijunti put - Gdje si točno zapeo? Gdje je code koji si do sada napisao?