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

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

Nastavnica kaze da je ovo rijesenje...

 

REM plocice
CLS
INPUT d
INPUT s
INPUT p
IF d MOD p > 0 AND s MOD p = 0 THEN br = s \ p
IF s MOD p > 0 AND d MOD p = 0 THEN br = d \ p
IF d MOD p > 0 AND s MOD p > 0 THEN br = d \ p + s \ p + 1

PRINT br

END


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

To jest jer uzima u obzir sva tri slučaja. Plus što je nastavnica zaboravila inicijalizirati varijablu br na nulu, ako ne treba lomiti pločice ni po horizontali, ni po vertikali, broj ostaje nula.

Poruka je uređivana zadnji put sri 8.2.2012 13:49 (Floki).
 
1 0 hvala 0
15 godina
offline
Programiranje u C++-u - pitanja i odgovori

Evo rješavam zadatak i napisao sam ovaj kod:

#include <iostream>
#include <vector>
#include <cmath>
#include <climits>
#include <algorithm>
#include <iomanip>
#include <utility>

using namespace std;

vector<vector<double> > mreza;
vector<pair<int,int> > dots;

double distance(pair<int,int> one,pair<int,int> two){
    double tmp;
    tmp=sqrt(abs(one.first-two.first)*abs(one.first-two.first)+abs(one.second-two.second)*abs(one.second-two.second));
    return tmp;
}
const double inf=ULONG_MAX;

int main(){
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
       int x,y;
       cin>>x>>y;
       dots.push_back(make_pair(x,y));
    }
    vector<double> temp(n,inf);
    mreza.insert(mreza.begin(),n,temp);
    for(int x=0;x<n;x++)
       for(int y=0;y<n;y++){
          if(y==x) continue;
          mreza[x][y]=mreza[y][x]=distance(dots[x],dots[y]);
       }

    vector<double> dist(n,inf);
    vector<bool> bio(n,false);
    dist[0]=0;
    for(int x=0;x<n-1;x++){
       double udaljenost=inf+1;
       int elem;
       for(int y=0;y<n;y++){
          if(udaljenost>dist[y] && !bio[y]){
             udaljenost=dist[y];
             elem=y;
          }
       }
       bio[elem]=true;
       for(int y=0;y<n;y++){
          if(dist[y]>udaljenost+mreza[elem][y]); // 52
             dist[y]=udaljenost+mreza[elem][y];
       }
    }

    double max=0;
    for(int x=0;x<n;x++){
       if(dist[x]>max) max=dist[x];
    }
    cout<<setprecision(2)<<max;
    return 0;
}

Pokušavam ga prevesti no g++ mi uporno vraća:

/home/capttawish/Dropbox/cpp/natjecanja/2011/mreza.cpp:34|52|instantiated from here|
/usr/include/c++/4.6/bits/stl_iterator_base_types.h|166|error: no type named ‘iterator_category’ in ‘struct std::pair<int, int>’|
/usr/include/c++/4.6/bits/stl_iterator_base_types.h|167|error: no type named ‘value_type’ in ‘struct std::pair<int, int>’|
/usr/include/c++/4.6/bits/stl_iterator_base_types.h|168|error: no type named ‘difference_type’ in ‘struct std::pair<int, int>’|
/usr/include/c++/4.6/bits/stl_iterator_base_types.h|169|error: no type named ‘pointer’ in ‘struct std::pair<int, int>’|
/usr/include/c++/4.6/bits/stl_iterator_base_types.h|170|error: no type named ‘reference’ in ‘struct std::pair<int, int>’|
||=== Build finished: 5 errors, 0 warnings ===|

 

Uopće nemam ideju što nije u redu! Može li mi netko reći gdje sam pogrješio?

 

EDIT:

Rješio sam problem. Naime funkcija distance je već bila deklarirana u std pa je to izazvalo pomutnju u g++'u. Dakle trebao sam samo dodat :: ispred poziva funkcije ili jednostavno promijeniti ime funkcije.

http://www.cplusplus.com/forum/beginner/61339/

Twitter- @capttawish Linux/GNU live forever.
Poruka je uređivana zadnji put pet 10.2.2012 9:30 (captain_soap_McTawish).
 
0 0 hvala 0
15 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori


4.Autobus koji vozi na relaciji doboj –derventa ima n stanica na kojima izlaze i ulaze putnici.kako bi vlasnik preduzeća imao uvid jesuli mu autobusi dovoljno veliki ,da putnici nebi stajali,naredio je vozačima da bilježebroj putnika u autobusu.Kako je vozačima naporno nakon svake stanice brojati putnike,oni broje samo koliko je putnika izašlo i koliko je ušlo na pojedinoj stanici.
Napiši program čiji će ulazni podaci biti broj stanica na datoj relaciji i za svaku stanicu broj putnika koji su izašli i broj putnika koji su ušlina toj stanici.program treba ispisivati koliko je najviše putnika vozilo u nekom trenutku u autobusu.
Napomena:
Prva stanica je u Doboju i prije nego autobus otvori vrata on je prazan.
Poslednja stanica je u derventi i na njoj će svi putnici izaćiiz autobusa i niko u njega neće ući.
Ulazni podaci:
Prirodan broj N(1<=N<=20)-broj stanica na kojima staje autobus
-N puta po dva cijela broja AiB(0<=A,B<=100) pri čemu je
A-broj putnika koji je izašao na stanicu
B-broj putnika koji je ušao na stanici
Svaki broj će biti u novom redu
Izlazni podatak:
Cijeli broj M koji će predstavljti najveći broj putnika koji se vozio autobusom u nekom trenutku.

 

Moze li samoo postupak kako da uradim.... ne treba mi kod.

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

Prvo ćeš početni broj putnika zapisati u jednu varijablu max. Moraš napraviti jednu for petlju koja će se iterirati N puta. U svakoj iteraciji petlje unosit će se broj putnika koji je ušao i izašao. Na ukupan broj putnika dodavat ćeš razliku broja putnika koji su ušli i koji su izašli. I to ćeš uspoređivati sa varijablom max te pohranjivati u nju samo ako je broj putnika veći od max. I na kraju će ti u varibali max ostati najveći broj putnika:

 

Twitter- @capttawish Linux/GNU live forever.
 
1 0 hvala 0
15 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
captain_soap_McTawish kaže...

Rješio sam problem. Naime funkcija distance je već bila deklarirana u std pa je to izazvalo pomutnju u g++'u. Dakle trebao sam samo dodat :: ispred poziva funkcije ili jednostavno promijeniti ime funkcije.

http://www.cplusplus.com/forum/beginner/61339/

Twitter- @capttawish Linux/GNU live forever.
15 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori
Luka je zbog kemije odustao od škole i zaposlio se kao vozač kamiona. Jedne večeri parkirao je svoja tri kamiona na kamionskom odmaralištu na kojem koriste neobičan način naplate parkiranja. Naime, daju popust na kolicinu.

Kad je parkiran jedan kamion, vozač plaća A kuna po minuti. Kad su parkirana dva kamiona, vozači placaju svaki po B kuna po minuti. Kad su parkirana tri kamiona, vozači plaćaju svaki po C kuna po minuti.

Napišite program koji će, na temelju brojeva A, B i C, te vremena parkiranja Lukina tri kamiona, izračunati koliko je kamionsko odmaralište zaradilo na Lukinim kamionima.

INPUT:
U prvom retku nalaze se tri prirodna broja A, B i C (1 <= C <= B <= A <= 100), cijene parkiranja iz teksta zadatka. U svakom od sljedeca tri retka nalaze se po dva prirodna broja. Prvi broj u retku označava trenutak u kojem je neki kamion stigao na odmaralište, a drugi broj označava trenutak u kojem je taj kamion krenuo dalje. Prvi broj je uvijek manji od drugog. Svi brojevi su manji od 100.

OUTPUT:
U jedan redak ispišite zbroj cijena parkiranja za sva tri Lukina kamiona.

Input:
5 3 1
1 6
3 5
2 8

Output:
33

 

Mozel pomoc?

 

Poceo sam raditi zadatak ....

http://www.bug.hr/forum/topic/softver-literatura-usluge/prodaja-knjige-hardware/103166.aspx
 
0 0 hvala 0
16 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
Intelovac123 kaže...
Luka je zbog kemije odustao od škole i zaposlio se kao vozač kamiona.

Rajić? {#}

Lack of money is the root of all evil. George Bernard Shaw
15 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
Intelovac123 kaže...

Prvo što trebaš je napraviti jedno polje veličine 100 i inicijalizirati ga na 0. Ono označava svaki trenutak. Onda ćeš pomoću for petlje n(u ovom sučaju konstanto 3) puta unositi brojeve a i b koji označavaju početni i krajni trenutak. U polje [a] povećavaš za jedan, a polje [b] smanjuješ za jedan; Nakon toga jednom for petljom prođeš po polje te broj vozila u trenutku x računaš kao zbroj vozila u prethodnome trenutku i trenutnome. Tada dobiješ broj vozila u svakome trenutku. I onda samo for petljom izračunaš ukupnu cijenu:

#include <iostream>

using namespace std;

int main(){
    int test[100]={0};
    int A,B,C;
    cin>>A>>B>>C;
    int n=3;
    for(int x=0;x<n;x++){
       int a,b;
       cin>>a>>b;
       test[a-1]++;
       test[b-1]--;
    }
    int uk=0;
    for(int x=1;x<100;x++){
       test[x]+=test[x-1];
    }
    B*=2;
    C*=3;
    for(int x=0;x<100;x++){
       switch (test[x]){
          case 1:
             uk+=A;
             break;
          case 2:
             uk+=B;
             break;
          case 3:
             uk+=C;
       }
    }
    cout<<uk<<endl;
    return 0;
}

Algoritam je konstante složenosti O(200). Mogao se još ubrzati no radi razumljivosti koda ostavio sam ovako.

Twitter- @capttawish Linux/GNU live forever.
Poruka je uređivana zadnji put čet 9.2.2012 9:32 (captain_soap_McTawish).
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
captain_soap_McTawish kaže...
Intelovac123 kaže...
 

Prvo što trebaš je napraviti jedno polje veličine 100 i inicijalizirati ga na 0. Ono označava svaki trenutak. Onda ćeš pomoću for petlje n(u ovom sučaju konstanto 3) puta unositi brojeve a i b koji označavaju početni i krajni trenutak. U polje [a] povećavaš za jedan, a polje [b] smanjuješ za jedan; Nakon toga jednom for petljom prođeš po polje te broj vozila u trenutku x računaš kao zbroj vozila u prethodnome trenutku i trenutnome. Tada dobiješ broj vozila u svakome trenutku. I onda samo for petljom izračunaš ukupnu cijenu:

#include <iostream>

using namespace std;

int main(){
    int test[100]={0};
    int A,B,C;
    cin>>A>>B>>C;
    int n=3;
    for(int x=0;x<n;x++){
       int a,b;
       cin>>a>>b;
       test[a-1]++;
       test[b-1]--;
    }
    int uk=0;
    for(int x=1;x<100;x++){
       test[x]+=test[x-1];
    }
    B*=2;
    C*=3;
    for(int x=0;x<100;x++){
       switch (test[x]){
          case 1:
             uk+=A;
             break;
          case 2:
             uk+=B;
             break;
          case 3:
             uk+=C;
       }
    }
    cout<<uk<<endl;
    return 0;
}

Algoritam je konstante složenosti O(200). Mogao se još ubrzati no radi razumljivosti koda ostavio sam ovako.

Znas li mozda kako bi islo u qbasicu?

http://www.bug.hr/forum/topic/softver-literatura-usluge/prodaja-knjige-hardware/103166.aspx
15 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
Intelovac123 kaže...

Znas li mozda kako bi islo u qbasicu?

Ne znam jer nikada nisam programirao u qbasicu.

Twitter- @capttawish Linux/GNU live forever.
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
captain_soap_McTawish kaže...
Intelovac123 kaže...

Znas li mozda kako bi islo u qbasicu?

Ne znam jer nikada nisam programirao u qbasicu.

Ok,hvala svejedno...

 

 

http://www.bug.hr/forum/topic/softver-literatura-usluge/prodaja-knjige-hardware/103166.aspx
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
captain_soap_McTawish kaže...

Evo rješavam zadatak i napisao sam ovaj kod:

 Morat ćeš čekati Tracera, baksu, rustweavera ili flokija.

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

Znas li mozda kako bi islo u qbasicu?

Pogresna tema, ne vidis li da je ova za C++?

 

ali evo ti:

 

http://pastebin.com/dFpFUv94

 

nisam komplicirao

My computer once beat me at chess, but we got even after a round of boxing.
17 godina
offline
Programiranje u C++-u - pitanja i odgovori

Čovjek mu da super algoritam za riješiti zadatak, složeniji za osmisliti, nego pretvoriti u kod bilo kojeg jezika, a on onako gotovanski "jel može u qbasicu"

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

Čovjek mu da super algoritam za riješiti zadatak, složeniji za osmisliti, nego pretvoriti u kod bilo kojeg jezika, a on onako gotovanski "jel može u qbasicu"

Sad mi na pamet pada odredena poslovica sa svinjama i biserima :D

 

steta truda...

My computer once beat me at chess, but we got even after a round of boxing.
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Pitanje,dali mozda ima ko kakav examle source za pomicanje i click miša na određene kordinate?

 
0 0 hvala 0
16 godina
offline
Programiranje u C++-u - pitanja i odgovori

Baš sam se sad registrirao na spoj.pl.

Probao sam riješiti ovaj zadatak al mi nije jasno kako kod inputa može biti upisan još jedan broj poslije 42 iako piše da se kad unese broj 42 program zaustavlja.Hvala.

AC Milan - IL CLUB PIU' TITOLATO AL MONDO
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
nux21 kaže...

Pitanje,dali mozda ima ko kakav examle source za pomicanje i click miša na određene kordinate?

#include <windows.h>
...
    float mX=65535.0/GetSystemMetrics(SM_CXSCREEN);
    float mY=65535.0/GetSystemMetrics(SM_CYSCREEN);
   
    int x=200, y=200;
 
    //pomakni cursor na odredeno mjesto
    mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, mX*x, mY*y, 0, 0);
   
    //lijeva tipka misa pritisnuta
    mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
   
    //lijeva tipka misa otpustena
    mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
...

GetSystemMetrics()

mouse_event()

 

pogadas, gornji kôd uzrokuje lijevi klik na koordinatama [200, 200]

My computer once beat me at chess, but we got even after a round of boxing.
17 godina
moderator
offline
Re: Programiranje u C++-u - pitanja i odgovori
emerik kaže...

Baš sam se sad registrirao na spoj.pl.

Probao sam riješiti ovaj zadatak al mi nije jasno kako kod inputa može biti upisan još jedan broj poslije 42 iako piše da se kad unese broj 42 program zaustavlja.Hvala.

Što ako je input iz datoteke, a ne s tipkovnice? {#} Čovek hoće pokazati da program ne staje zato što je input došao do kraja, nego zato jer je došao do broja 42.

 

nux21 kaže...

Pitanje,dali mozda ima ko kakav examle source za pomicanje i click miša na određene kordinate?

http://social.msdn.microsoft.com/Forums/en-US/gametechnologiesdirectx101/thread/1b563e35-8aea-4b98-8c76-490a8852ce9a/

 

rustweaver kaže...
Intelovac123 kaže...

Znas li mozda kako bi islo u qbasicu?

Pogresna tema, ne vidis li da je ova za C++?

 

ali evo ti:

 

http://pastebin.com/dFpFUv94

 

nisam komplicirao

Pfuj QBasic. S tim ljudima samo produljuješ agoniju. {#}

 

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

Baš sam se sad registrirao na spoj.pl.

Probao sam riješiti ovaj zadatak al mi nije jasno kako kod inputa može biti upisan još jedan broj poslije 42 iako piše da se kad unese broj 42 program zaustavlja.Hvala.

Taj input poslije  42 uopće nije bitan, njega moraš gledati kao da ne postoji. Ti učitavaš broj po broj, te tako ispisuješ brojeve, sve dok uneseni broj ne bude 42. Tada prekidaš program.

Twitter- @capttawish Linux/GNU live forever.
16 godina
offline
Re: Programiranje u c++-u- pitanja i odgovori
To razumijem,ali kako da znam koliko brojeva upisati?
AC Milan - IL CLUB PIU' TITOLATO AL MONDO
16 godina
offline
Re: Programiranje u c++-u- pitanja i odgovori
Sry na duoble postu,al u onom gore primjeru je poslije 42 upisan još jedan broj
AC Milan - IL CLUB PIU' TITOLATO AL MONDO
15 godina
offline
Re: Programiranje u c++-u- pitanja i odgovori
emerik kaže...
To razumijem,ali kako da znam koliko brojeva upisati?

To uradiš pomoću while petlje. Kada je broj jednak 42 onda program prekineš.Evo:

#include <iostream>
#include <iomanip>
#include <cmath>

using namespace std;

int main(){
    int broj;
    cin>>broj;  //unosiš početnu vrijednost
    while(broj!=42){  //dok je broj raziličit od 42 ponavljaš iteriranje
       cout<<broj<<endl;  //ispišeš broj
       cin>>broj;         //unosiš novi broj
    }
    return 0; //prekid programa
}

Dakle ti uopće ne moraš znati koliko brojeva treba upisati. Kada uneseni broj bude jednak 42, ti ga ne ispisuješ i prekidaš progam.

 

emerik kaže...
Sry na duoble postu,al u onom gore primjeru je poslije 42 upisan još jedan broj

To uopće nema veze. Ti taj broj moraš ignorirati, tj. gledati kao da ne postoji. Ti 42 gledaš kao zadnji uneseni broj i ono dalje ništa ne unosiš.

Twitter- @capttawish Linux/GNU live forever.
Poruka je uređivana zadnji put ned 12.2.2012 10:00 (captain_soap_McTawish).
16 godina
offline
Re: Programiranje u c++-u- pitanja i odgovori
Nije.Oni su u primjeru poslije broja 42 upisali još jedan broj.Ovaj primjer što si ti stavio bi bio prejednostavan.
AC Milan - IL CLUB PIU' TITOLATO AL MONDO
15 godina
offline
Re: Programiranje u c++-u- pitanja i odgovori
emerik kaže...
Nije.Oni su u primjeru poslije broja 42 upisali još jedan broj.Ovaj primjer što si ti stavio bi bio prejednostavan.

Nisi me shvatio. Nije bitno on što se unosi poslije 42. To za tvoj program kao da ne postoji. Ti moraš razmišljati kao da je 42 zadnji uneseni broj. I tada prekineš program. A ono što je stavljeno u input poslije 42, to jednostavno nećeš unositi u program.

 

Dakle spoj.pl pomoću evaluatora unese neki input. Ti iz toga inputa pomoću cin/scanf naredbe dobivaš jedan po jedan broj. Unosiš ih onako kao želiš. Npr.

INPUT:

1
88
42
53
150

 

Ti u svoj program uneseš prvi broj postane ovakav:

INPUT88
42
53
150

Sljedeći broj na inputu je 88. Ti ćeš njega preuzeti iz inputa kada želiš. Mi uzimamo brojeve iz inputa do 42. Kada bude 42 mi prekidamo unos:

INPUT

53
150

Ta sva broja se nalaze u INPUTU. Oni uopće nisu u tvome programu. Prekidom tvoga programa nestane i INPUT za tvoj program i ta sva broja jednostavno nestanu. Dakle korisnik ih unese no ti ih uopće ne uzimaš u svome programu.

Twitter- @capttawish Linux/GNU live forever.
16 godina
offline
Re: Programiranje u c++-u- pitanja i odgovori
Da,hvala.Oni to provjeravaju pomoću evaluatora.
AC Milan - IL CLUB PIU' TITOLATO AL MONDO
17 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

imam jedno cini mi se jednostavno pitanje: kako napraviti algoritam koji bi za zadani broj izbacio npr. 10 tih brojeva ciji je prosjek taj isti broj, no da na umu imate da ce vrlo vjerojatno taj broj biti blizu prosjeka, a mala sansa da ce daleko ako me razumijete. objasnit cu na primjeru:

prosjek je 1,5.

1

2

1

3

0

4

2

1

1

1

1

0

2

stvar je u tome da imam zadano kolko neka nogometna momčad zabija u prosjeku, i sad ocu da mi izbaci moguce rezultate. ako je moguce u pascalu no moze i u c++ posto je tema c++. hvala unaprijed

Sic semper tyrannis.
Moj PC  
0 0 hvala 0
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Može mi netko reći što bi trebao raditi ovaj dio koda?Zadatak je u tome da od upisanog stinga treba naći najkraći mogući.

 

string ShortestPalindrome(string s) {

  if (IsPalindrome(s)) return s;

 

  int x = 1;

  string w = s;

while(!IsPalindrome(w))  {

  w = s + ReverseString(s.substr(0, x));

  x++;

  }

 

  return w;

}

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

Može mi netko reći zašto ovaj kod ne radi?Baca mi grešku u liniji gdje koristim malloc.

 

#include<iostream>

#include<cstdlib>

#include<string.h>

using namespace std;

 

int main() {

   char *polje[1000];

   char buff[3001];

   int n;

   cin>>n;

 

   for ( int i = 0 ; i < n; ++i) {

     cin>>buff;

     polje[i] = malloc(sizeof(char) * (strlen(buff)+1));

     strcpy(polje[i],buff);

     } 

 

   for ( int i = 0; i < n; ++i)

    cout<<polje[i];

 

   for ( int i = 0; i < n; ++i)

    free(polje[i]);   

 

   system("PAUSE");

   return 0;

   }

AC Milan - IL CLUB PIU' TITOLATO AL MONDO
Moj PC  
0 0 hvala 0
E-mail:
Lozinka:
 
vrh stranice