Stranica 1 od 5 12345 ZadnjeZadnje
Pokazujem rezultate 1 do 10 od 41

Zadaci iz programiranja c++ : please help

Raspravljate o temi Zadaci iz programiranja c++ : please help u Školarci i Studenti forumu, dio Društvo foruma; Mlađem bratu bi mi trebalo ovo riješiti, ja dugo nisam prismrdio c++-su (a i kad jesam nisam pojma imao ) ...

  1. #1
    dr.sc. Foruma Avatar od korisnika mišo_legenda
    Datum registracije
    10-12-07
    Lokacija
    Lovran
    Starost
    26
    Poruka
    2,076
    Liked
    18 times

    Zadaci iz programiranja c++ : please help

    Mlađem bratu bi mi trebalo ovo riješiti, ja dugo nisam prismrdio c++-su (a i kad jesam nisam pojma imao) tako da bi vas zamolio ako itko zna ovo riješiti da riješi čim prije, moj brat i ja bi vam bili jako zahvalni.

    I molim vas da to ne bude nešto ekstra profi rješeno jer onda on neće kužiti kod, čim jednostavnije probajte riješiti, oni su tek učili if-ove i ostale kontrolne strukture, funkcije,polja,petlje,2d polja, stringove, pokazivace, 2d din. niz.




    1.
    U main funkciji ucitajte naziv poduzeca i broj njegovih zaposlenika. Pronadjite
    u funkciji suma_ascii sumu ascii kodova upisanog naziva tvrtke i funkciji
    suma_znamenaka_zap sumu znamenaka broja zaposlenih u tvrtki.
    Zbrojite dobivene sume i u funkciji pretvori pretvorite dobiveni zbroj u sustav
    s bazom 16. Ispisite dobivenu sumu ascii kodova, sumu znamenaka broja zaposlenih
    i dobiveni ekvivalent zbroja tih suma u sustavu sa bazom 16.



    2.
    Za n broj natjecatelja (treba se omoguciti da se unese broj) u skijaskom natjecanju unosite vremena prve i druge voznje u dinamicka polja X i Y. U polju Z nadjite zbroj vremena prve i druge voznje za svakog natjecatelja i ispisite to polje uzlazno(dakle od najboljeg natjecatelja prema najlosijem).Zatim kreirajte polje P u koje morate upisati sva vremena iz niza Z koja su iznad prosjeka.
    Sve obavezno radite modularno, dakle jedna funkcija za kreiranje polja,jedna za upis elemenata
    polja, zatim jedna za zbrajanje,jedna za sortiranje (sortiranje obavite pomoću bubble sorta)itd. Na kraju ispisite sva cetiri polja.


    Tko god da ovo riješi, ima od mene rep+ i pivu kad god poželi.

  2. #2
    dr.sc. Foruma Avatar od korisnika mišo_legenda
    Datum registracije
    10-12-07
    Lokacija
    Lovran
    Starost
    26
    Poruka
    2,076
    Liked
    18 times

    Re: Zadaci iz programiranja c++ : please help

    Joj zaboravio sam, u ovom 1. zadatku im je rečeno da barem jedna funkcija mora biti riješena rekurzivno.

  3. #3
    V.I.P. Član Snake Champion, Highstreet Headache Champion, Frogger Champion, Chicken Attack Champion, Super Pacman Champion, Chuck Norris - Attack of the Massacre Ni Champion Avatar od korisnika Ive_ri
    Datum registracije
    22-03-07
    Lokacija
    Rijeka
    Starost
    23
    Poruka
    11,410
    Liked
    321 times

    Re: Zadaci iz programiranja c++ : please help

    2. zadatak

    #include "stdafx.h"
    #include<iostream>
    using namespace std;

    float *alociranje_prostora(int x);
    void unos_vremena(float *polje,int n);
    void zbroj_vremena(float *X,float *Y,float *Z,int broj);
    void sortiranje(float *polje,int n);
    float iznad_prosjeka(float *Z, float *P,int broj);
    void ispis(float *niz,int broj);



    int main()
    {
    int broj_natjecatelja,iznadprosjecni;
    cout<<"Unosenje rezultata za koliko skijasa? : \t";
    cin>>broj_natjecatelja;

    float *X,*Y,*Z,*P;



    X=alociranje_prostora(broj_natjecatelja);
    Y=alociranje_prostora(broj_natjecatelja);
    Z=alociranje_prostora(broj_natjecatelja);
    P=alociranje_prostora(broj_natjecatelja);

    cout<<"Unos vremena prve voznje : "<<endl; unos_vremena(X,broj_natjecatelja);cout<<endl;
    cout<<"Unos vremena druge voznje : "<<endl; unos_vremena(Y,broj_natjecatelja);cout<<endl;

    zbroj_vremena(X,Y,Z,broj_natjecatelja);
    sortiranje(Z,broj_natjecatelja);
    iznadprosjecni=iznad_prosjeka(Z,P,broj_natjecatelja);

    cout<<"Ispis niza X : "<<endl; ispis(X,broj_natjecatelja);cout<<endl<<endl;
    cout<<"Ispis niza Y : "<<endl; ispis(Y,broj_natjecatelja);cout<<endl<<endl;
    cout<<"Ispis niza Z (zbroj X i Y sortiran uzlazno) : "<<endl; ispis(Z,broj_natjecatelja);cout<<endl<<endl;
    cout<<"Ispis niza P (iznad prosjecni iz niza Z) : "<<endl; ispis(P,iznadprosjecni);cout<<endl<<endl;

    delete[]X;delete[]Y; delete []Z;delete []P; X=NULL;Y=NULL;Z=NULL,P=NULL;
    return 0;
    }



    float *alociranje_prostora(int x){
    float *niz=new float[x];
    return niz;
    }



    void unos_vremena(float *polje,int n){
    int i=0;
    for(i=0;i<n;i++){
    cout<<"Unesite vrijeme za "<<i+1<<". natjecatelja u skijanju ";
    cin>>*(polje+i);}
    }



    void zbroj_vremena(float *X,float *Y,float *Z,int broj){
    int i;
    for(i=0;i<broj;i++){
    *(Z+i)=*(X+i)+*(Y+i);
    }
    }



    void sortiranje(float *polje,int n){
    for(int i=0;i<n-1;i++)
    for(int j=0;j<n-1-i;j++)
    if(*(polje+j)>*(polje+j+1)){
    float temp=*(polje+j);
    *(polje+j)=*(polje+j+1);
    *(polje+j+1)=temp;
    }
    }




    float iznad_prosjeka(float *Z, float *P,int broj){

    float suma,prosjek=0;
    for(int i=0;i<broj;i++)
    suma+=*(Z+i);
    prosjek=suma/broj;
    int k=0;
    for(int j=0;j<broj;j++)
    if(*(Z+j)>prosjek){
    *(P+k)=*(Z+j);
    k++;}
    return k;
    }



    void ispis(float *niz,int broj){
    for(int i=0;i<broj;i++)
    cout<<*(niz+i)<<"\t";
    }

    Evo mislim da je to to što se tiče drugog zadatka, evo prikaza primjera kako to radi...




    E sad jedino, ovaj unos je napravljen kao unos za decimalne brojeve, a ne u formatu sat/minuta/sekunda to bi još vjerojatno trebalo modificirati (neznam kako im je rečeno), ali nek se i brat s nečim pozabavi... tu se još dosta sitnica da dodati ali ovo mu je dobra baza, bar mislim...

    Ako nešto nije jasno , slobodno pitaj, nije mi se dalo pisati sad komentare na sve... ali mislim da bi trebalo bit jasno za isčitat kod s obzirom na ovo što su do sada radili...


    Budem vjerojatno i 1. zadatak riješio ali malo kasnije, neda mi se sad pisat odmah i taj...

  4. #4
    Akademik Avatar od korisnika kale
    Datum registracije
    07-10-06
    Lokacija
    Misty Mountains
    Starost
    25
    Poruka
    4,818
    Liked
    15 times

    Re: Zadaci iz programiranja c++ : please help

    imam i ja nesto,ali tko zna malo vise u c++

  5. #5
    V.I.P. Član Snake Champion, Highstreet Headache Champion, Frogger Champion, Chicken Attack Champion, Super Pacman Champion, Chuck Norris - Attack of the Massacre Ni Champion Avatar od korisnika Ive_ri
    Datum registracije
    22-03-07
    Lokacija
    Rijeka
    Starost
    23
    Poruka
    11,410
    Liked
    321 times

    Re: Zadaci iz programiranja c++ : please help

    1. zadatak



    #include "stdafx.h"
    #include <iostream>
    #include<string>
    using namespace std;
    #define max 50


    int suma_ascii_vrijednosti_naziva(char tvrtka[]);
    int suma_znamenki_broja_zaposlenih(int broj);
    void pretvorba_u_hex(int zbroj,int baza);


    int main()
    {

    char poduzece[max];
    int broj_zaposlenika,zbroj_ascii=0,zbroj_znamenaka=0;
    int zbrojeno_ascii_i_znam;


    cout<<"Unesite naziv tvrtke ";
    cin.getline(poduzece,max);
    cout<<"Unesite broj zaposlenih ";
    cin>>broj_zaposlenika;


    zbroj_ascii=suma_ascii_vrijednosti_naziva(poduzece);
    cout<<"suma ascii vrijednosti unesenog naziva tvrtke iznosi "<<zbroj_ascii<<endl;

    zbroj_znamenaka=suma_znamenki_broja_zaposlenih(broj_zaposlenika);
    cout<<"suma znamenki od broja zaposlenih iznosi "<<zbroj_znamenaka<<endl;

    zbrojeno_ascii_i_znam=zbroj_znamenaka+zbroj_ascii;
    cout<<"zbrojene sume znamenaka i sume ascii kodova prebaceni u sustav s bazom 16 iznose"<<endl;
    pretvorba_u_hex(zbrojeno_ascii_i_znam,16);
    cout<<endl;


    return 0;
    }



    int suma_ascii_vrijednosti_naziva(char tvrtka[]){
    int zbroj=0,i;
    for(i=0;i<strlen(tvrtka);i++){ //koristimo strlen iz biblioteke string, petlja ide od 0 do duljine naziva tvrtke
    zbroj+= int(tvrtka[i]); //pretvara se svako slovo u ascii ekvivalente i odmah se zbrajaju
    }
    return zbroj;
    }



    int suma_znamenki_broja_zaposlenih(int broj)
    {
    int znamenka,suma=0;
    while(broj>0)
    {
    suma+=broj%10; // npr. 200%10=0 200/10=20 pa opet 20%10=0 20/10=2
    // i tako dobivamo znamenku po znamenku od iza prema naprijed koje pozbrajamo jel

    broj/=10;

    }
    return suma;

    }



    void pretvorba_u_hex(int zbroj,int baza){

    if(zbroj/baza>0){
    pretvorba_u_hex(zbroj/baza,baza);} //rekurzija izvrsava se sve dok je kvocijent broja koji se dijeli s bazom(u nasem slucaju 16) veci od 0 //(to nam je sidreni uvjet koji zaustavlja petlju, bez toga funkcija bi beskonacno pozivala samu sebe)

    int ost=zbroj%baza; //operator modulo vraca ostatak pri dijeljenju

    if(ost>=10){
    cout<<char(ost+55); //ostatak +55 jer je ascii
    //kod slova A 65, a mi imamo ostatke od 10 do najviše 15 s obzirom na hex

    }
    else{
    cout<<ost; //ako je ostatak dijeljenja manji od 10 najnormalnije moze ispisivati taj broj (npr. broj 5 je isto 5 i u hex-u)
    }
    }
    Evo stavio sam i par komentara da bude sve jasno, ali stvarno ovo ne bi trebao biti problem....




    Nadam se da nece samo prepisati rješenje jer onda niš od toga svejedno ... evo recimo neka proba funkciju za sumu znamenaka napisati kao rekurzivnu i tako skratiti kod što se tiče ove funkcije... (pisalo je da bar jedna mora biti rekurzivna ali u biti dvije se ovdje vrlo lako mogu rekurzijom riješiti...)..

    Evo ovdje ima tablicu ascii kodova, obično su fore s ascii - ima uvijek prisutne u ovakvim zadačićima ...

    http://www.asciitable.com/






    I mišo dužan si pivu-dvije kad budem na kojoj fešti u Lovranu, brzo će maškare



    edit :

    @kale

    daj molim te nabaci to rješenje da vidim malo, baš me zanima kako si riješio...
    Zadnji Uredio Ive_ri : 20-12-08 u 20:31

  6. #6
    dr.sc. Foruma Avatar od korisnika mišo_legenda
    Datum registracije
    10-12-07
    Lokacija
    Lovran
    Starost
    26
    Poruka
    2,076
    Liked
    18 times

    Re: Zadaci iz programiranja c++ : please help

    Ive svaka ti dala

    Malo kasnije kad brat dođe doma ću mu dati to pa ću pitati ovdje ako mu nešto ne bude bilo jasno.

    Puno ti hvala

    Ne mogu sada repati jer sam nedavno, ali dobit ćeš repicu čim budem mogao, i to više nego zasluženo

  7. #7
    dr.sc. Foruma Avatar od korisnika mišo_legenda
    Datum registracije
    10-12-07
    Lokacija
    Lovran
    Starost
    26
    Poruka
    2,076
    Liked
    18 times

    Re: Zadaci iz programiranja c++ : please help

    Evo pogledao buraz ova rješenja.
    U prvom zadatku je sve jasno, super si ga komentirao.




    Samo par pitanja što se tiče 2. zadatka:


    float *alociranje_prostora(int x){
    float *niz=new float[x];
    return niz;
    Što ova funkcija točno radi (osim što rezervira prostor)? Možeš li malo objasniti kako točno vraća ovu vrijednost sa return-om?



    float iznad_prosjeka(float *Z, float *P,int broj){

    float suma,prosjek=0;
    for(int i=0;i<broj;i++)
    suma+=*(Z+i);
    prosjek=suma/broj;
    int k=0;
    for(int j=0;j<broj;j++)
    if(*(Z+j)>prosjek){
    *(P+k)=*(Z+j);
    k++;}
    return k;
    }

    Zašto je tu ovaj k uveden?



    Ostalo je jasno. Brat ti puno zahvaljuje na svemu, sigurno si dosta vremena na ovo potrošio.

  8. #8
    V.I.P. Član Snake Champion, Highstreet Headache Champion, Frogger Champion, Chicken Attack Champion, Super Pacman Champion, Chuck Norris - Attack of the Massacre Ni Champion Avatar od korisnika Ive_ri
    Datum registracije
    22-03-07
    Lokacija
    Rijeka
    Starost
    23
    Poruka
    11,410
    Liked
    321 times

    Re: Zadaci iz programiranja c++ : please help

    Ma imao sam jučer viška slobodnog vremena i uz to bilo mi dosadno, pa reko ajde da i ja jednom na ovom forumu nešto korisno napravim


    Evo dodao sam komentare u kod...


    float *alociranje_prostora(int x){
    float *niz=new float[x]; //deklaracija pokazivača 'niz' i alokacija prostora (naredba new) i to onoliko blokova memorije kolika je vrijednost spremljena u x (1 blok memorije za podatak tipa float zauzima 4 byta ako se ne varam)
    //x predstavlja broj natjecatelja za koje cemo unositi (ovdje možemo staviti bilo koji naziv jer su ove varijable lokalne (x je formalni argument)- vidi ga samo funkcija, a stvarni argumenti su oni kod poziva f-je u mainu)

    return niz; //funkcija vraća memorijsku lokaciju koja je sadrzana u pokazivacu i onda kada u main-u pozivamo funkciju za alociranje
    pojedinog din. polja tamo dobivamo tu lokaciju(hex.kod te lokacije u memoriji) i spremamo je u pokazivac X,Y,Z (u main-u) da bi kasnije mogli raditi s vrijednostima na tim mem.lokacijama








    float iznad_prosjeka(float *Z, float *P,int broj){

    float suma,prosjek=0;
    for(int i=0;i<broj;i++)
    suma+=*(Z+i);
    prosjek=suma/broj;
    int k=0;
    for(int j=0;j<broj;j++)
    if(*(Z+j)>prosjek){
    *(P+k)=*(Z+j);
    k++;}
    return k;
    }

    Varijabla k je brojač koji broji koliko je brojeva iz niza Z iznad prosjeka. Funkcija vraća vrijednost tog brojača (i kasnije u main-u spremamo tu vrijednost u neku varijablu) zato jer nam kod poziva za ispis niza P treba ograničenje koliko će članova ispisivati.
    U slučaju ako bi i za niz P kao i za ostala dva kod poziva ispisa stavljali ograničenje broj_natjecatelja, kod ispisa P-a bi osim tih članova koji su veći od prosjeka c++ "pokušavao" ispisivati još neke vrijednosti,pa bi ispisao neke gluposti koje bi se u tom času našle na tim memorijskim lokacijama (gdje brojevi nisu bili iznad prosjeka pa nisu bili ni upisani na te lokacije) Ako me kužiš.. nek proba zamijeniti u pozivu funkcije da bude broj natjecatelja ograničenje pa će vidjeti što će mu se događati i u čemu je problem...






    Evo ima u temi navedenoj ispod u zadnjem postu na toj stranici par linkova sa dobrim tutorialima za c++ pa nek si pogleda malo...

    Linkovi za svakog školarca i studenta
    Zadnji Uredio Ive_ri : 21-12-08 u 18:05

  9. #9
    Akademik Avatar od korisnika kale
    Datum registracije
    07-10-06
    Lokacija
    Misty Mountains
    Starost
    25
    Poruka
    4,818
    Liked
    15 times

    Re: Zadaci iz programiranja c++ : please help

    ive---care--ti mene smatras c++ znalcem
    krivo..imam ija nesto za rijesiti,a ne rjesenje

  10. #10
    V.I.P. Član Snake Champion, Highstreet Headache Champion, Frogger Champion, Chicken Attack Champion, Super Pacman Champion, Chuck Norris - Attack of the Massacre Ni Champion Avatar od korisnika Ive_ri
    Datum registracije
    22-03-07
    Lokacija
    Rijeka
    Starost
    23
    Poruka
    11,410
    Liked
    321 times

    Re: Zadaci iz programiranja c++ : please help

    Pa stavi tu tekst zadatka, možda netko bude znao riješiti... Fora bi bila da ova tema zaživi, ne samo za ovaj slučaj, nego da jedni drugima pomažemo oko raznih zadataka... Od toliko ljudi svaki zadatak će barem netko znati riješiti...

Stranica 1 od 5 12345 ZadnjeZadnje

Lajkaj nas na Facebooku