Programiranje u C++-u - pitanja i odgovori izdvojena tema

poruka: 7.285
|
čitano: 1.712.301
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
12 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Dobar dan! Trebao bih pomoć,sutra imam usmeni pred veoma neugodnim profesorom,međutim, imam zadatak koji nam je dao,ali ga ne znam rijesiti,ako zna netko,molio bih ako bi mogao napisati!
zadatak glasi ovako : 

Napiši program koji upisuje prirodan broj N pa ispisuje svaku znamenku u novi red pocevsi od zadnje.
MOLIM POMOC!!! 

 

 
0 0 hvala 0
15 godina
online
Re: Programiranje u C++-u - pitanja i odgovori
  Bela27 kaže...

 

Dobar dan! Trebao bih pomoć,sutra imam usmeni pred veoma neugodnim profesorom,međutim, imam zadatak koji nam je dao,ali ga ne znam rijesiti,ako zna netko,molio bih ako bi mogao napisati!
zadatak glasi ovako :

Napiši program koji upisuje prirodan broj N pa ispisuje svaku znamenku u novi red pocevsi od zadnje.
MOLIM POMOC!!!

  Neugodan profesor, a pita ovakve gluposti?

#include <iostream>

using namespace std;

int main(){
      int broj;
      cin >> broj; 
      do{
          cout << broj % 10 << endl;
          broj /= 10;
      }while(broj != 0);
      return 0;
}

 

  Zadnju znamenku broja možeš dobiti tako da tražiš ostatak toga broja pri dijeljenju s 10. Npr. ako imaš broj 479, njegov ostatak pri dijeljenju s 10 je 9. U c++ za traženje ostatka koristimo operator %.

cout << broj % 10 << endl;

  Ova gornja linija taj ostatak ispisuje na ekran.

 

Kada smo ispisali zadnju znamenku, onda je moramo ukloniti. To radimo tako da broj cjelobrojno dijelimo s 10. Npr. 479/10 = 47. I onda nakon toga opet ispisemo zadnju znamenku, pa je onda uklonimo. I tako sve dok broj ne bude imao vise znamenki, tj. kada je jednak 0. To sve radimo pomocu do-while petlje, koja se vrti sve dok je broj razlicit od 0. I kod nje je specificno sto ona prvo izvrsi jednu iteraciju, pa onda vrsi provjeru, za razliku od while petlje koja odmah na pocetku vrsi prvojeru. do-while petlju sam koristio upravo zbog toga svojstva, jer u slucaju da korisnik unese 0, while petlja se uopce ne bi se nista ispisali na ekranu, a koristeci do-while petlju na ekranu ce se ispisati 0.

14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Bela27 kaže...

 

Dobar dan! Trebao bih pomoć,sutra imam usmeni pred veoma neugodnim profesorom,međutim, imam zadatak koji nam je dao,ali ga ne znam rijesiti,ako zna netko,molio bih ako bi mogao napisati!
zadatak glasi ovako : 

Napiši program koji upisuje prirodan broj N pa ispisuje svaku znamenku u novi red pocevsi od zadnje.
MOLIM POMOC!!! 

 

 

#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
    int i,n,k,niz[100];
    cout<<"Unesi N"<<endl;
    cin>>n;
    k=0;
    while (n>0) {
        niz[k]=n%10;
        n=n/10;
        k=k+1;
    }
    for (i=0;i<k;i++)
    {
    cout<<niz[i]<<endl;
    }
    system ("PAUSE");
    return 0;
}

http://www.bug.hr/forum/topic/softver-literatura-usluge/prodaja-knjige-hardware/103166.aspx
17 godina
offline
Programiranje u C++-u - pitanja i odgovori

int n;

cin>> n;

while(n>0)

{

    cout<< n%10 << endl;

    n /= 10;

}

 

traži mu prirodan broj - pa može i while

 
3 0 hvala 1
12 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Hvala hvala hvala hvala hvala ti kraljuuuu!! 
A sama njegova pojava je strasna,pusti ti to ;)  

17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
Bela27 kaže...

Hvala hvala hvala hvala hvala ti kraljuuuu!! 
A sama njegova pojava je strasna,pusti ti to ;)  

Evo ti da ga malo zafrkavaš, kad je tako strašan.

 

int n;

cin>> n;

for(; n > 0; n/= 10)

   cout<< n%10 << endl;

 

Možeš izostaviti inicijalizaciju u for petlji, a ; moraš staviti - inače captain je objasnio princip rada.

Poruka je uređivana zadnji put sri 8.5.2013 18:08 (Floki).
12 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

da da vidio sam :D
daj mi  jos samo reci,kak bi trebalo ic kad bi htio da mi ispisuje svaku drugu znamenku? 

17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori

n /= 100

 

852 / 100 = 8

 

nakon što modulom izlučimo prvu znamenku, broj cjelobrojno dijelimo sa 100 i treća postaje prva.

Poruka je uređivana zadnji put sri 8.5.2013 18:06 (Floki).
12 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

hvala ti :) 
ako cu trebat jos sta,javim haha vidim da ste veoma ljubazni svi forumasi :D

12 godina
offline
Programiranje u C++-u - pitanja i odgovori

Pozdrav,

 

ako može pomoć oko zadatak bio bih zahvalan. Definirajte klasu Pravac sa privatnim podatkovnim članovima k i l.  Definirajte klasu Tocka sa privatnim podatkovnim članovima x i y. Napišite funkciju (nebitno kakva) koja će biti prijatelj i klase Pravac i klase Tocka, pristupat će izravno njihovim podatkovnim članovima i ovako je definirana: double Funkcija(Pravac &p, Tocka &t).

 

Za sad sam ovo napisao, ali baca greške.

 

class Tocka;

class Pravac{
public:
    friend Pravac Funkcija(Pravac &p, Tocka &t);   
private:
    int k,l;
};

class Tocka{
public:
    friend Tocka Funkcija(Pravac &p, Tocka &t);
private:
    int x,y;
};

double Pravac Tocka::Funkcija(Pravac &p, Tocka &t){
   
};

Poruka je uređivana zadnji put sri 8.5.2013 23:54 (neznam123456).
Moj PC  
0 0 hvala 0
17 godina
offline
Programiranje u C++-u - pitanja i odgovori

Ovo moraš moći sam napisati kad učiš friend funkcije.

Pogledaj te funkcije koje si deklarirao u klasama, to nisu iste funkcije, kad imaju različite povratne vrijednosti to su različite funkcije.

Pogledaj kako si deklarirao tijelo funkcije u globalnom scopeu. Funkcija ne može imati dvije povratne vrijednosti.

Dakle, tvoj temeljni problem ovdje je nepoznavanje funkcija kao takvih.

 

Kad razmrsiš te temeljne stvari oko funkcija pogledaj ovdje za friend funkcije

http://msdn.microsoft.com/en-us/library/h2x4fzdz(v=vs.80).aspx

 

Ima nekih različitosti kako se pišu u klasama i koriste, ali ne velikih.

 

 

Ovo bi ti trebalo biti dosta da napišeš sam primjer za friend funkcije.

Ako ponovno zapneš, stavi ponovno kod, pa ćemo pomoći, a nema smisla da pišem kod za primjer, bolje ćeš naučiti kad pokušavaš sam.

Poruka je uređivana zadnji put čet 9.5.2013 14:30 (Floki).
 
0 0 hvala 0
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Može preporuka neke knjige za učenje C++-a, ali po mogućnosti da je mogu kupit negdje u knjižari, da ne moram sa e-baya naručivat?

 

 

When I get sad I stop Being sad and be awesome instead. True Story.
Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
donator_bubrega kaže...

Može preporuka neke knjige za učenje C++-a, ali po mogućnosti da je mogu kupit negdje u knjižari, da ne moram sa e-baya naručivat?

Pogledaj tu.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
12 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Dakle, profesor ovako trazi:

 

Ovo je dio maina(nepromjenjiv tako mora bit jer se klase uploudaju u sustav)

 

if(tipOsobe == 'Z')
    {
    Zaposlenik* z = b.nadjiZaposlenika(q);
    if(z == NULL)
    continue;

    cout << *z << endl;
    }
    else if(tipOsobe == 'K')
    {
    Klijent* k = b.nadjiKlijenta(q);
    if(k == NULL)
    continue;

    cout << *k << endl;

    char tipTransakcije;
    double kolicina;
    cin >> tipTransakcije >> kolicina;//U - iplata, I - isplata
    if(b.odobrenaTransakcija(tipTransakcije, kolicina, k))
    {
    k->provediTransakciju(tipTransakcije,kolicina);
    cout << "Odobreno" << endl;
    }
    else
    {
    cout << "Transakcija nije odobrena" << endl;
    }

    }

    }


I sada , metoda koja provjerava po nekim mjerilima programa dal je true ili false, pa ce stoga pisat odobreno ili transakcija nije odobrena izgleda ovako:

bool Banka::odobrenaTransakcija(char tipTransakcije, double kolicina,Klijent *k)throw(){
    double stanjeBanke=0;
    for(int i=0; i!=klijenti.size();i++)
    {
       stanjeBanke+=klijenti[i].getSaldo();
    }


    if(tipTransakcije=='U'){
      
       if(k->getSaldo()+kolicina<-1500 ||kolicina>stanjeBanke/10){
       return false;
    }
    else return true;
    }

    else if(tipTransakcije=='K'){
       kolicina=0;
       return false;}
    else if(tipTransakcije=='Z'){
       kolicina=0;
       return false;}
    else {
   
    if(k->getSaldo()-kolicina<-1500 ||kolicina>stanjeBanke/10){
       return false;
    }
    else return true;
    }
};


Medjutim, problem je u tome sto profesor uzima testne podatke i u jednom trenutku dva put zaredom upise K (klijent)  'prezime'    K 'prezime'      ,     a nakon tog jednog k prezimena bi trebalo upisat U/I(uplata isplata) i double broj, a kako se main ne moze promijeniti ne znam kako da izmanipuliram program da mi ne javi grešku, jer mi javi grešku uvijek jer mi se čini da ne voli primat string preko cin-a i spremat ga u double i slati ga putem parametra double... svi primjeri  rade osim tog koji ima dva put zaredom sifru K za klijenta i prezime klijenta.

Poruka je uređivana zadnji put čet 9.5.2013 19:09 (OziK'oZmaj).
Moj PC  
0 0 hvala 0
12 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

I ispiše mi poruku da transakcija nije odobrena, al onda se program zaštopa i javi se greška i kad se pritisne cancel izidje  iz njega. Dakle CIN>>char>>double; trazi a u tom trenutku dodje 'K' "Marijan" kao input i tu sam skuzio da je problem. A main klasu ne smijem mijenjati, nego bi se to trebalo preko metode koja je u if-u sredit, a s c++-om nisam bas tak iskusan, a treba mi hitno.

Moj PC  
0 0 hvala 0
12 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Zanemarite, riješeno je, postavio sam fakat glupo pitanje iz očaja, a problem je bio jer nisam stavio return null u metodama koje nalaze klijenta i zaposlenika... Al fakat sam se mucio s tim 4 sata, stojao na mjestu.

Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
OziK'oZmaj kaže...

Zanemarite, riješeno je, postavio sam fakat glupo pitanje iz očaja, a problem je bio jer nisam stavio return null u metodama koje nalaze klijenta i zaposlenika... Al fakat sam se mucio s tim 4 sata, stojao na mjestu.

Hoce to tak...

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Kako da kompajlam one .A fileove koje dobijem u mapi lib sa SFML frameworkom 2.0?

HUGE RESPECT: woodgamesfx, captain_soap_McTawish, rustweaver, royalhero, tracerCPP,Indestructible
Moj PC  
0 0 hvala 0
15 godina
online
Re: Programiranje u C++-u - pitanja i odgovori
FireMan97 kaže...

Kako da kompajlam one .A fileove koje dobijem u mapi lib sa SFML frameworkom 2.0?

  To su ti  statički library fileovi i oni su već kompajlani. Ako hoćeš koristiti funkcije/klase koje nalaze u njima, onda ih moraš uključiti pri kompajliranju programa. Kod g++ samo dodaš ove opcije

-L<lokacija library fileova> -l<ime filea>

Ako koristis ide, onda bi to trebao namjesiti negdje u postavkama samoga IDE-a.

15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

 

Veliki pozdrav svima. Pripremam se za pismeni test iz programiranja (!) pa imam nekoliko zadataka gdje jednostavno ne vidim koji je to put do rjesenja. Ispod svakog zadatka cu napisati rjesenje, pa ko zna objasniti kako se do njega dodje bio bi mu veoma zahvalan. Hvala unaprijed.

  1. void f(int a, int &b) {
  2. cout << a << b;
  3.   if (a) {
  4.   b = b+1;
  5.   f(a-1,b);
  6. }
  7.   cout << a << b;
  8. }
  9. int main() 
  10. {
  11. int a=2, b=3;
  12. f(a,b);
Rjesenje: 231405051525
  1. char a[] = "WAHN";
  2. void print(int i) {
  3.   if (a[i] != '\0') {
  4.   cout << a[i];
  5.   print ((i+2)%5);
  6.   cout << a[i];
  7. }
  8. }
  9. int main() 
  10. {
  11. print(1); 
Rjesenje: ANWHHWNA
  1. void f(char *p) {
  2. if (*p != '\0') {
  3. cout << *p;
  4. *p = *(p+1);
  5. f(p+2);
  6. }
  7. }
  8. int main() 
  9. {
  10. char s[] = "WUNDER";
  11. f(s);
  12. cout << s;
Rjesenje: WNEUUDDRR
  1. void f(int i, int &r) {
  2. if (i>1) {
  3. cout << i << r;
  4. i = i - 1;
  5. r = r + 1;
  6. f(i, r);
  7. }
  8. cout << i << r;
  9. }
  10. int main() 
  11. {
  12. int i = 4, r = 4;
  13. f(i, r);
Rjesenje: 44352617172737
  1. void f(int a, int *b, int &c) {
  2. a = a + 1;
  3. b = b + 1;
  4. c = c + 1;
  5. cout << a << *b << c;
  6. }
  7. int main() 
  8. {
  9. int vals[] = {4, 1, 3};
  10. f(vals[2], vals+1, *vals);
  11. for (int i=0; i<3; i = i+1)
  12. cout << vals[i];
Rjesenje: 435513

 

Loyal to the game
Poruka je uređivana zadnji put pon 13.5.2013 18:55 (Simon Ghost Riley).
15 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Nije to ništa komplicirano. Koncentriraj se i prođi još jednom kroz te programe liniju po liniju. Ako treba uzmi i olovku i papir da si zapisuješ što se događa...

0xBADC0DE
 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
rustweaver kaže...

Nije to ništa komplicirano. Koncentriraj se i prođi još jednom kroz te programe liniju po liniju. Ako treba uzmi i olovku i papir da si zapisuješ što se događa...

Sve to stoji. Svaki zadatak uradim temeljno, kao sto kazes liniju po liniju sa olovkom i papirom. 

Ali evo npr, kod prvog zadatka: znaci imamo 2,3 a onda se poziva funkcija f.

U funkciji f imamo prvo cout << a << b ------- 23

Sada nisam siguran sta znaci ovaj uvjet if(a)? 

Ovo sljedece 1405 se dobije ponavljanjem b+1, a-1. Eh sada, otkud ovo drugo 05, a poslije i ovo 15 i 25???

Loyal to the game
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Simon Ghost Riley kaže...
Sada nisam siguran sta znaci ovaj uvjet if(a)? 

U C-u svaki broj različit od nule se interpretira kao "True", a nula kao "False".

 

if (a)

ti u biti znači:

if (a!=0)

 

0xBADC0DE
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
rustweaver kaže...
Simon Ghost Riley kaže...
Sada nisam siguran sta znaci ovaj uvjet if(a)? 

U C-u svaki broj različit od nule se interpretira kao "True", a nula kao "False".

 

if (a)

ti u biti znači:

if (a!=0)

 

Aha aha, hvala ti puno na ovom objasnjenju.

Drugi sam zadatak skontao. Treci ne mogu nikako. Dodjem do ovo WNEU, a ovo ostalo UDDRR ne znam kako se dobije. Mozes li mi tu pomoci?

Cetvrti sam isto sada rijesio.

A peti cu probati ovako pa mi pomozi ako moze:

 

Ovaj prvi broj 4 je vals[2]=3 i u funkciji 3+1=4.

Ne znam kako se dobije ovaj drugi broj 3.

Petica isto kao i prva cetvorka. I ova ostala tri broja petljom. Dakle ovdje mi samo nije jasna ova trica.

 

Loyal to the game
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
donator_bubrega kaže...

Može preporuka neke knjige za učenje C++-a, ali po mogućnosti da je mogu kupit negdje u knjižari, da ne moram sa e-baya naručivat?

 

 

na isocpp.org imas prvih par chaptera od bjarneove knjige free.

15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Simon Ghost Riley kaže...
Dodjem do ovo WNEU, a ovo ostalo UDDRR ne znam kako se dobije. Mozes li mi tu pomoci?

Pogledaj ovu liniju:

 

*p = *(p+1);

 

Znaš li što ona radi? Mijenja znakove u stringu.

 

Funkcija 'f' Ti ispiše samo WNE, a pri tome se sadržaj stringa izmijeni u "UUDDRR", i na kraju ga se ispiše takvog u funkciji main u ovoj liniji:

 

cout << s;

 

0xBADC0DE
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
rustweaver kaže...
Simon Ghost Riley kaže...
Dodjem do ovo WNEU, a ovo ostalo UDDRR ne znam kako se dobije. Mozes li mi tu pomoci?

Pogledaj ovu liniju:

 

*p = *(p+1);

 

Znaš li što ona radi? Mijenja znakove u stringu.

 

Funkcija 'f' Ti ispiše samo WNE, a pri tome se sadržaj stringa izmijeni u "UUDDRR", i na kraju ga se ispiše takvog u funkciji main u ovoj liniji:

 

cout << s;

 

E ne znam kako da ti se zahvalim na pomoci. Zaista si mi puno pomogao sa ovim objasnjenjima. Mozes li mi jos samo reci kod zadnjeg zadatka kako se ona trica na drugom mjestu dobije? 

Loyal to the game
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Simon Ghost Riley kaže...

Mozes li mi jos samo reci kod zadnjeg zadatka kako se ona trica na drugom mjestu dobije? 

drugi argument funkcije 'f' je pokazivač na drugi element polja vals:

vals+1

 

Nakon toga se u funkciji f, taj pokazivač još jednom uveća te tako pokazuje na posljednji element polja vals, odnosno na brojku 3

 

Slijedi ispis i dobiješ 3

0xBADC0DE
Poruka je uređivana zadnji put pon 13.5.2013 20:17 (rustweaver).
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
rustweaver kaže...
Simon Ghost Riley kaže...

Mozes li mi jos samo reci kod zadnjeg zadatka kako se ona trica na drugom mjestu dobije? 

drugi argument funkcije 'f' je pokazivač na drugi element polja vals:

vals+1

 

Nakon toga se u funkciji f, taj pokazivać još jednom uveća te tako pokazuje na poslijednji element polja vals, odnosno na brojku 3

 

Slijedi ispis i dobiješ 3

Ali drugi element u vals polju je 1? Tj. 4 -0 , 1- 1, 3-2. Je li vals+1 pokazuje na 1 ili?

I u funkciji 1+1=2?

Loyal to the game
Poruka je uređivana zadnji put pon 13.5.2013 20:21 (Simon Ghost Riley).
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Simon Ghost Riley kaže...

Ali drugi element u vals polju je 1? Je li vals+1 pokazuje na 1 ili?

Da on pokazuje na 1. Pazi to je pokazivač, njegova vrijednost je memorijska adresa na koju on pokazuje.

 

Simon Ghost Riley kaže...

I u funkciji 1+1=2?

Ne

 

vals pokazuje na prvi element

vals + 1 pokazuje na drugi element

vals + 1 + 1 pokazuje na treći element

 

To je pokazivač, a ne referenca. Njegova vrijednost je memorijska adresa, tek kad ga dereferenciraš dobiješ vrijednost onoga na što on pokazuje.

0xBADC0DE
Poruka je uređivana zadnji put pon 13.5.2013 20:27 (rustweaver).
E-mail:
Lozinka:
 
vrh stranice