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

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

Kao što je mbaksa rekao.

Prvo, van for-a deklariši i inicijaliziraj parnih i neparnih, inicijaliziraj in na 0.
Recimo:

parnih++;

 

Za neparne:

neparnih++;

 

Programming is understanding. – Kristen Nygaard
17 godina
moderator
online
Re: Programiranje u C++-u - pitanja i odgovori
royalhero kaže...

Kao što je mbaksa rekao.

Prvo, van for-a deklariši i inicijaliziraj parnih i neparnih, inicijaliziraj in na 0.
Recimo:

parnih++;

 

Za neparne:

neparnih++;

Neparni joj ne trebaju. A i ako bi joj trebali, nema smisla da uvodi novu varijablu, pošto je broj neparnih = ukupno - parnih. {#}

13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

sto bi u konacnici izgledalo ovako, jel?

 

#include<iostream>
using namespace std;
int main()
{
 int x, broj, brojac=0;
 cout<<"unesite jedan broj";
 cin>>x;
 for(int i=1; i<=x; i++)
 {
 
 cout<<"unesite jos toliko brojeva";
 cin>>broj;
if (broj%2==0)
brojac++;
}
cout<<"parnih je"<<brojac<<endl;
system("pause");
return 0;
}

 

meni je brojac stalno vrtio izvan for petlje..zato mi je krivo islo...:/

 

 

 

hvalaa puno na pomoci :)

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

Evo slučajno se učlanio na Z-trening pa probam jedan zadatak:

N different points with integer coordinates are given in a plane. You are to write a program that finds the maximum number of collinear points (they all belong to the same line).

INPUT:
The first line of standard input gives a number N (1 <= N <= 600). In each of the next N lines there will be two integers X and Y (-32000 <= X,Y <= 32000) that will represent the coordinates of the given points.

OUTPUT:
To the standard output, output only one integer that yields the maximum number of points given in the input that are collinear.

Input:
4
1 1
2 2
2 1
3 1

Output:
3

 

Moje rješenje:

 

#include <iostream>
using namespace std;

void Najcesci(int* p, int n, int* koliko){
    int i;

    *koliko = p[0];
    for(i = 1; i < n; i++)
        if(p[i] > *koliko)
            *koliko = p[i];
}
int main()
{
    int n, pomX, pomY, X, Y;
    int brX[64000] = {0}, brY[64000] = {0};

    cin >> n;
    for(int i = 0; i < n; i++){
        cin >> pomX >> pomY;
        brX[(pomX < 0) ? (-pomX+32000) : pomX]++;
        brY[(pomY < 0) ? (-pomY+32000) : pomY]++;
    }
    Najcesci(&brX[0], 64000, &X);
    Najcesci(&brY[0], 64000, &Y);

    if(X > Y)
        cout << X;
    else
        cout << Y;
    return 0;
}

 

..i na testnim podacima dobivam prolaznost 4/10 {#}. Netko vidi problem?

koliko sam skužio, ovaj kod računa najčešću koordinatu na x ili y osi

za input

4

0 0

1 1

2 2

3 3

neće dati rezultat da se sve četiri točke nalaze na pravcu, nego će dati output 1 jer se sve koordinate točaka razlikuju

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

OT

kad su ženskice u pitanju, i bez indenta kod prolazi{#}

(šala mala{#}, i ja držim da je bitnije da je brzo skužila gdje treba biti brojač od indenta, formi se bude naučila lako)

Poruka je uređivana zadnji put ned 11.12.2011 12:40 (Floki).
 
0 0 hvala 0
17 godina
moderator
online
Re: Programiranje u C++-u - pitanja i odgovori
Floki kaže...

OT

kad su ženskice u pitanju, i bez indenta kod prolazi{#}

(šala mala{#}, i ja držim da je bitnije da je brzo skužila gdje treba biti brojač od indenta, formi se bude naučila lako)

Da je kôd pravilno indentirala, ne bi ni morala ništa pitati na forumu jer bi vidjela da se brojač nalazi na krivom mjestu. {#} U tome i je cijela poanta. Ljudi su nemarni i ne indentiraju kôd i ne stavljaju red razmaka prije i poslije petlji i time si stvore probleme koje u prvom redu ni ne bi imali da su pravilno indentirali kôd.

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

OT

kad su ženskice u pitanju, i bez indenta kod prolazi{#}

(šala mala{#}, i ja držim da je bitnije da je brzo skužila gdje treba biti brojač od indenta, formi se bude naučila lako)

Da je kôd pravilno indentirala, ne bi ni morala ništa pitati na forumu jer bi vidjela da se brojač nalazi na krivom mjestu. {#} U tome i je cijela poanta. Ljudi su nemarni i ne indentiraju kôd i ne stavljaju red razmaka prije i poslije petlji i time si stvore probleme koje u prvom redu ni ne bi imali da su pravilno indentirali kôd.

točno tako, to nek joj bude pouka za dalje{#}

kod koda vrijedi načelo preglednosti i jednostavnosti

sve ono što nema te dvije osobine, po defaultu je sumnjivo.

 

Ovaj citat iz knjige C# 4 nije loše zapamtiti:

 

 

"As is so often the case in life, making something look easy takes years of practice and

hard work. It can also be a thankless task: if you devise a contract that is a model of

clarity, people will probably think it was easy to design. Conversely, unnecessary complexity

is often mistaken for cleverness."

 

Poruka je uređivana zadnji put ned 11.12.2011 13:30 (Floki).
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

nova sam u programiranju, nije me bilo na zadnjim predavanjima pa sada sama ucim neke stvari....trebala mi je ideja da uopce ukljucim taj brojac....tako da ste mi puno pomogli, bez obzira na moj stil pisanja koda...:)

hvala jos jednom ;)

 
0 0 hvala 0
17 godina
moderator
online
Re: Programiranje u C++-u - pitanja i odgovori
maricuj kaže...

nova sam u programiranju, nije me bilo na zadnjim predavanjima pa sada sama ucim neke stvari....trebala mi je ideja da uopce ukljucim taj brojac....tako da ste mi puno pomogli, bez obzira na moj stil pisanja koda...:)

hvala jos jednom ;)

Ako ćeš još kad stavljati kôd na forum, prvo ga pasteaj u http://jsbeautifier.org/ da ti ga "uljepša", tj. da ti ispravno indentira kôd - kad nekoliko puta to napraviš, počet će ti automatski dolaziti kako se indentira kôd (ako ti nije dovoljno već i to što ti editor sam indentira kôd {#}).

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

definitivno cu ga koristiti od sada..hvala :)

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

Evo, na ovo sam mislio kad sam rekao da se pomoću površine trokuta računa kolinearnost točaka.

(preko nagiba dviju točaka je jednostavije, ali je problem dijeljenje sa nulom).

Logika programa je: ako je površina trokuta date tri točke 0, one su na pravcu, preko prolaza kroz petlje se broji koliko točaka je na pravcu uz date dvije koje određuju pravac.

 

 

#include <iostream>
using namespace std;
 
int main()
{
    int brojac, brojKolinearnih = 0, pomocna = 0, brojTocaka;
    double povrsina;
    cin>> brojTocaka;
    int *tockeX = new int[brojTocaka];
    int *tockeY = new int[brojTocaka];

    for(int i = 0; i < brojTocaka; i++)
    {
       cin>> tockeX[i] >> tockeY[i];
    }

    for (int i = 0; i < brojTocaka - 2; i++)
    {
       for (int j = i + 1; j < brojTocaka - 1; j++)
        {
          brojac = 0;
            for (int k = j + 1; k < brojTocaka; k++)
            {
             povrsina = 0.5 * ((tockeX[i] * (tockeY[j] - tockeY[k])) + (tockeX[j] * (tockeY[k] - tockeY[i])) +
                (tockeX[k] * (tockeY[i] - tockeY[j])));
                if (povrsina == 0)
                {
                brojac++;
                }
            }
            if (brojac > pomocna)
            {
             pomocna = brojac;
            }
       }
       if (pomocna > brojKolinearnih)
        {
          brojKolinearnih = pomocna;
        }
    }
    brojKolinearnih = 3 + (brojKolinearnih - 1);
    cout<< "Maksimalan broj kolinearnih tocaka: " << brojKolinearnih << endl;
    delete [] tockeX;
    delete [] tockeY;
    return 0;
}
 

Poruka je uređivana zadnji put ned 11.12.2011 21:04 (Floki).
 
2 0 hvala 0
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori
Može biti. U potpunosti sam zaboravio na "kose" pravce ;)
http://www.chess.com/livechess/profile/Tracer1808
Moj PC  
0 0 hvala 0
17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
TracerCPP kaže...
Može biti. U potpunosti sam zaboravio na "kose" pravce ;)

možda bi se moglo nešto i sa nagibom (slope)

m = (y2 - y1) / (x2 - x1)

ali problem je dijeljenja sa 0 - pa bi se moralo sa pažnjom implementirati,

ne znam kako je sa pretvaranjem u polarni sustav - čini mi se da i tamo ima zamka djeljenja sa 0

ovo sa površinom mi se čini najjednostavnije.

Poruka je uređivana zadnji put ned 11.12.2011 18:54 (Floki).
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
TracerCPP kaže...
Može biti. U potpunosti sam zaboravio na "kose" pravce ;)

{#} A kakvi su to "kosi" pravci? NHF, nasmijalo me :D

 

EDIT: @Floki - U tom slucaju nagib pravca je pi/2 ili ti 90°.

C provides a programmer with more than enough rope to hang himself. C++ provides a firing squad, blindfold and last cigarette.
Poruka je uređivana zadnji put ned 11.12.2011 18:53 (1domagoj1).
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
1domagoj1 kaže...
TracerCPP kaže...
Može biti. U potpunosti sam zaboravio na "kose" pravce ;)

{#} A kakvi su to "kosi" pravci? NHF, nasmijalo me :D

Ma mislim na one koji nisu tipa

 

x = c i y = c; c - konstanta

 

{#}

http://www.chess.com/livechess/profile/Tracer1808
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
TracerCPP kaže...

Ma mislim na one koji nisu tipa

 

x = c i y = c; c - konstanta

 

{#}

To su trivijalni slucajevi pravaca :D

 

Opci oblik je y = kx + l.

C provides a programmer with more than enough rope to hang himself. C++ provides a firing squad, blindfold and last cigarette.
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Znam. I ja sam položio matematičku analizu {#}, ali su me testni podaci naveli na krivo razmišljanje.

http://www.chess.com/livechess/profile/Tracer1808
Moj PC  
0 0 hvala 0
17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
1domagoj1 kaže...
TracerCPP kaže...
Može biti. U potpunosti sam zaboravio na "kose" pravce ;)

{#} A kakvi su to "kosi" pravci? NHF, nasmijalo me :D

 

EDIT: @Floki - U tom slucaju nagib pravca je pi/2 ili ti 90°.

uzmi dvije točke

a(5,3)

b(5.0)

ili nagib pi/2

kad računaš nagib po formuli - dobiješ dijeljenje sa 0

 

preko računa površine trokuta, sve to otpada jer nigdje nemaš djeljenje, istina , preko površine trokuta testiraš tri točke odjednom

matematički je to u redu, pošto ionako ne testiraš kolinearnost dviju, nego tri točke, dvije točke su matematički uvijek kolinearne.

Poruka je uređivana zadnji put ned 11.12.2011 19:19 (Floki).
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Floki kaže...

uzmi dvije točke

a(5,3)

b(5.0)

ili paralelu sa osi y

kad računaš nagib po formuli - dobiješ dijeljenje sa 0

Pa upravo to sam ti i rekao xD. Izraz (y1 - y0)/(x1 - x0) ti je zapravo koeficijent smjera pravca. Kad dode do dijeljenja s nulom, to znaci da je pravac pod nagibom pi/2, zato sto je rezultat od tangens(pi/2) beskonacno, a beskonacno kao rezultat se moze interpretirati kad dode do dijeljenja s nulom. Dakle, treba ti samo jos jedan uvjet koji provjerava da li je nazivnik =0.

C provides a programmer with more than enough rope to hang himself. C++ provides a firing squad, blindfold and last cigarette.
Poruka je uređivana zadnji put ned 11.12.2011 19:16 (1domagoj1).
17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
1domagoj1 kaže...
Floki kaže...

uzmi dvije točke

a(5,3)

b(5.0)

ili paralelu sa osi y

kad računaš nagib po formuli - dobiješ dijeljenje sa 0

Pa upravo to sam ti i rekao xD. Izraz (y1 - y0)/(x1 - x0) ti je zapravo koeficijent smjera pravca. Kad dode do dijeljenja s nulom, to znaci da je pravac pod nagibom pi/2, zato sto je rezultat od tangens(pi/2) beskonacno, a beskonacno kao rezultat se moze interpretirati kad dode do dijeljenja s nulom. Dakle, treba ti samo jos jedan uvjet koji provjerava da li je nazivnik =0.

a što kad imaš ove dvije situacije:

a(1,1)

b(1,0)

 

a(2,2)

b(2,0)

kroz račun dobiješ isti nagib 0, a pravci različiti

dakle, još if uvjeta

 

to je fino računati za 2 točke - a kad ti složi da program treba izračunati za 100 točaka, gdje možeš imati paralelne i okomite sa x koji ne moraju biti isti,

dakle, ništa bez dva generalna if uvjeta - koje onda moraš granati po koordinatama, a to usložnjava stvari.

 

razlika između matematičara i programera, matematičar bi sigurno srušio na ispitu nekoga tko bi preko površine trokuta računao kolinearnost točaka u pravokutnom sustavu,

uz sve dužno poštovanje prema kraljici znanosti, jer je sve to njezina aparatura.{#}

Poruka je uređivana zadnji put ned 11.12.2011 20:16 (Floki).
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Imam pitanje:

 

 

int i;
    for (i=0; i<=9; i++)
       cout << i << endl;

 

Ispis programa:

 

0

1

2

3

4

5

6

7

8

9

 

 

E sad meni nije jasno zasto to ispisuje ako sam samo napravio varijablu, u petlji joj dao vrijednos 0, provijerio ako je <=9 i povečao ju (i++), na kraju zadao da se ispise i

to samo jednom, a ona(varijabla) se ispise 10 puta i to uvijek sa drugom vrijednošć/ču.

 

Zašto?

Buzzzzzzzzzzzzzzzzzzzzzzzzzz
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Games 4 life kaže...

Trolaš il se šališ?

Programming is understanding. – Kristen Nygaard
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
royalhero kaže...
Games 4 life kaže...

Trolaš il se šališ?

Neznam,pitam.

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

Evo uzmi tvoj primjer:
i=0, uslov je da je i manje ili jednako 9.

i=0, manje je od devet, ispisati će se i, tj. 0, i će se povećati za 1.
i=1, manje je od devet, ispisati će se i, tj. 1, i će se povećati za 1.

...
i=9, jednako je devet, ispisat će se i, tj. 9, i će se povećati za 1.
i=10, nije manje niti jednako od 9, izlazi se iz petlje.


Programming is understanding. – Kristen Nygaard
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Games 4 life kaže...
Neznam,pitam.

Prvo pitaj Google, sve što ti mogu reći je, sretno ti sa takvim načinom učenja, nećeš daleko stići pilanjem po forumu.

Ne možeš pri prvom preoblemu ići na forum i pitati, malo se namuči, tako razvijaš logiku.
Moraš PAŽLJIVO čitati knjigu, detaljno, svaki primjer analizirati, a ne pitati ovakve stvari, pročitaj još jednom o for petlji.
Probaj mjenjati argumente for petlje, vidi što će se analogno tome mjenjati, malo mućkaj!, i nemoj pjeniti, stvarno sam mislio da se šališ.

Programming is understanding. – Kristen Nygaard
Poruka je uređivana zadnji put ned 11.12.2011 20:29 (royalhero).
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

 

koga vraga si iso radit petlju ako nezelis da ti se ista ponavlja, isto tako si mogao napravit:

 

int i=0;

if (i<=0){

cout<<i<<endl;

}

Igor
Poruka je uređivana zadnji put ned 11.12.2011 20:39 (CRT).
Moj PC  
0 0 hvala 0
17 godina
moderator
online
Re: Programiranje u C++-u - pitanja i odgovori
Games 4 life kaže...
E sad meni nije jasno zasto to ispisuje ako sam samo napravio varijablu, u petlji joj dao vrijednos 0, provijerio ako je <=9 i povečao ju (i++), na kraju zadao da se ispise i

to samo jednom, a ona(varijabla) se ispise 10 puta i to uvijek sa drugom vrijednošć/ču.

 

Zašto?

Zašto napamet radiš? Zašto nisi pogledao kako si piše naredba for? I što znači koji dio te naredbe?

 

I još jedna stvar - naredba završava znakom ; - dakle, "točkom-zarez". To što si ti cout gurnuo u novi red u C++-u ne igra apsolutno nikakvu ulogu - sve do točke-zarez je dio naredbe for.

14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

imam par problema:

1.   neznam kada upotrijebiti "=" a kada "==", znam teoriju, i koji sta znaci ali neznam koji kada trebam primjeniti....

2. neznam kada koristiti {}, mislio sam da su mi potrebne samo jedne, ali pišući program sam trebao staviti kod samo  jedne (!?) case naredbe..... sad ih koristim svugdje: if, while, for, switch....

 

Igor
Moj PC  
0 0 hvala 0
17 godina
moderator
online
Re: Programiranje u C++-u - pitanja i odgovori
CRT kaže...

imam par problema:

1.   neznam kada upotrijebiti "=" a kada "==", znam teoriju, i koji sta znaci ali neznam koji kada trebam primjeniti....

2. neznam kada koristiti {}, mislio sam da su mi potrebne samo jedne, ali pišući program sam trebao staviti kod samo  jedne (!?) case naredbe..... sad ih koristim svugdje: if, while, for, switch....

Ne znaš ti ništa. Napiši što piše za =, a što za ==. Zar nema primjera?

 

Vitičaste zagrade služe za stvaranje bloka naredbi. Znači, ako imaš naredbu if:

 

if (uvjet) naredba;

 

Ako umjesto "naredba" želiš napisati više naredbi, onda ćeš ih vitičastim zagradama zatvoriti u blok naredbi.

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

što su ponovno mijenjali gramatiku, primjećujem da ih sve više piše "neznam" i slične stvari

 
2 0 hvala 0
E-mail:
Lozinka:
 
vrh stranice