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

poruka: 7.285
|
čitano: 1.725.895
|
moderatori: XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Bukva kaže...

... A po sebi znam koliko je teško kada se jednom naučiš na jedan tip programiranja, preći na drugi (QB na C++, C++ na Python (uvlačenja), Ruby na Haskell).

Bilo sto na Haskell {#}.

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

ekipa,rijesavam ovaj zadatak:

 

http://www.z-trening.com/tasks.php?show_task=5000000040

 

e sad uspia sam ga nakodirat na način da se umjesto razlomaka upisuju brojevi, znaci umisto 3/4 se upiše 0.75 i na taj način mi je radia, ali u zadatku je naglašeno da budu razlomci, pokuša sam nekako na najjednostavniji način preradit ga ali je problem šta varijabla char ne može primit znak /  , onda mu se naravno ni jedan if ne poklapa i rezultat je kriv,jel pada kome na pamet kako to sredit

 

 

#include<iostream>

#include<string>

#include<vector>

 

using namespace std;

 

int main()

 

{

int brojprijatelja;

char kroz;

int djelovipizze1,djelovipizze2;

double zbrojdjelovapizze = 0.0;

double ostatakdoubleapridijeljenjuscijelimbrojem;

double oststakoddoubleadointa;

int brojkojitrebaoduzestiodzbroja;

vector <double> vectordjelovapizze;

cout << " mirko upisi koliko prijatelja ces pozvati" << endl;

cin >> brojprijatelja;

cout << " neka tvoji prijatelji upisu koliko pizze zele pojesti" << endl;

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

{

cin >> djelovipizze1 >> kroz >> djelovipizze2;

 

if (djelovipizze1,kroz,djelovipizze2 == 1/4)

 {

vectordjelovapizze.push_back(0.25);

 }

else if(djelovipizze1,kroz,djelovipizze2 == 1/2)

 {

vectordjelovapizze.push_back(0.5);

 }

else if (djelovipizze1,kroz,djelovipizze2 == 3/4)

 {

vectordjelovapizze.push_back(0.75);

 }

 

}

for (int i=0; i<vectordjelovapizze.size();i++)

{

zbrojdjelovapizze += vectordjelovapizze[i];

}

 

brojkojitrebaoduzestiodzbroja = zbrojdjelovapizze / 1;

ostatakdoubleapridijeljenjuscijelimbrojem = zbrojdjelovapizze - brojkojitrebaoduzestiodzbroja;

oststakoddoubleadointa = 1 - ostatakdoubleapridijeljenjuscijelimbrojem;

 

cout << "mirko morat ces kupiti" << " " << zbrojdjelovapizze + oststakoddoubleadointa <<" " << "pizze" << endl;

}

 

Nikad te necemo zaboraviti. RIP EnlightenedPhoenix 24.6.2011.
Poruka je uređivana zadnji put pet 9.12.2011 9:06 (athlon64).
Moj PC  
0 0 hvala 0
16 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori

umjesto da imas 

if (djelovipizze1,kroz,djelovipizze2 == 1/4) 

vectordjelovapizze.push_back(0.25);

 

 

double ukupnoPizza=0;

 

//kroz petlju za svakog prijatelja pozoves:

ukupnoPizza += atof(djelovipizze1) / atof(djelovipizze2);

 

Varijablu ukupnoPizza na kraju zaokruzis na veci cijeli broj i to ti je to

 

 

A inace, odgovor na tvoje pitanje sa usporedjivanjem je da trebas koristiti strcmp() funkciju za usporedbu, npr

if (strcmp(djelovipizze, "3/4")==0)

...

Lack of money is the root of all evil. George Bernard Shaw
Poruka je uređivana zadnji put pet 9.12.2011 9:25 (CalvinRi).
15 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
CalvinRi kaže...

umjesto da imas 

if (djelovipizze1,kroz,djelovipizze2 == 1/4) 

vectordjelovapizze.push_back(0.25);

 

 

double ukupnoPizza=0;

 

//kroz petlju za svakog prijatelja pozoves:

ukupnoPizza += atoi(djelovipizze1) / atoi(djelovipizze2);

 

Varijablu ukupnoPizza na kraju zaokruzis na veci cijeli broj i to ti je to

 

da ali šta će se onda upisivat , 2 broja, tj 3 i 4?? pa caka je u tome da na upisu baš bude: 3/4 , i ništa drugo, zna sam ja i sam napravit to šta si ti reka.

Nikad te necemo zaboraviti. RIP EnlightenedPhoenix 24.6.2011.
16 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
athlon64 kaže...
CalvinRi kaže...

umjesto da imas 

if (djelovipizze1,kroz,djelovipizze2 == 1/4) 

vectordjelovapizze.push_back(0.25);

 

 

double ukupnoPizza=0;

 

//kroz petlju za svakog prijatelja pozoves:

ukupnoPizza += atoi(djelovipizze1) / atoi(djelovipizze2);

 

Varijablu ukupnoPizza na kraju zaokruzis na veci cijeli broj i to ti je to

 

da ali šta će se onda upisivat , 2 broja, tj 3 i 4?? pa caka je u tome da na upisu baš bude: 3/4 , i ništa drugo, zna sam ja i sam napravit to šta si ti reka.

if (strcmp(djelovipizze, "3/4")==0)

Lack of money is the root of all evil. George Bernard Shaw
15 godina
offline
Programiranje u C++-u - pitanja i odgovori

kad napisem to  if (strcmp ( djelovipizze1,kroz,djelovipizze2 == 1/4)) , podcrta mi sve 3 varijable u unutarnjoj zadgradi

Nikad te necemo zaboraviti. RIP EnlightenedPhoenix 24.6.2011.
Moj PC  
0 0 hvala 0
16 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
athlon64 kaže...

kad napisem to  if (strcmp ( djelovipizze1,kroz,djelovipizze2 == 1/4)) , podcrta mi sve 3 varijable u unutarnjoj zadgradi

strcmp prima samo dvije varijable koje se usporedjuju. Ti si predao 3 varijable odvojene zarezom. Pripazi sto usporedjujes i s cim.

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

kad napisem to  if (strcmp ( djelovipizze1,kroz,djelovipizze2 == 1/4)) , podcrta mi sve 3 varijable u unutarnjoj zadgradi

strcmp prima samo dvije varijable koje se usporedjuju. Ti si predao 3 varijable odvojene zarezom. Pripazi sto usporedjujes i s cim.

prvi put cujesm za strcmp funkciju pa se nemoj čudit, al ti meni nisi riješio problem nego si mi samo rekao oo što sam i znao, ajde iskodiraj ovo tako da na ulazu bude ili 3/4 ili 1/4 ili 1/2

 

edit: samo sekund da malo bolje razmotrim ovo sta si napisa gore

Nikad te necemo zaboraviti. RIP EnlightenedPhoenix 24.6.2011.
Poruka je uređivana zadnji put pet 9.12.2011 9:37 (athlon64).
16 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
athlon64 kaže...
CalvinRi kaže...
athlon64 kaže...

kad napisem to  if (strcmp ( djelovipizze1,kroz,djelovipizze2 == 1/4)) , podcrta mi sve 3 varijable u unutarnjoj zadgradi

strcmp prima samo dvije varijable koje se usporedjuju. Ti si predao 3 varijable odvojene zarezom. Pripazi sto usporedjujes i s cim.

prvi put cujesm za strcmp funkciju pa se nemoj čudit, al ti meni nisi riješio problem nego si mi samo rekao oo što sam i znao, ajde iskodiraj ovo tako da na ulazu bude ili 3/4 ili 1/4 ili 1/2

 

edit: samo sekund da malo bolje razmotrim ovo sta si napisa gore

char unos[10];

cin >> unos;

 

if (strcmp(unos, "1/4") == 0)

 {

vectordjelovapizze.push_back(0.25);

 }

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

kad napisem to  if (strcmp ( djelovipizze1,kroz,djelovipizze2 == 1/4)) , podcrta mi sve 3 varijable u unutarnjoj zadgradi

strcmp prima samo dvije varijable koje se usporedjuju. Ti si predao 3 varijable odvojene zarezom. Pripazi sto usporedjujes i s cim.

prvi put cujesm za strcmp funkciju pa se nemoj čudit, al ti meni nisi riješio problem nego si mi samo rekao oo što sam i znao, ajde iskodiraj ovo tako da na ulazu bude ili 3/4 ili 1/4 ili 1/2

 

edit: samo sekund da malo bolje razmotrim ovo sta si napisa gore

 

char unos[10];

cin >> unos;

 

if (strcmp(unos, "1/4") == 0)

 {

vectordjelovapizze.push_back(0.25);

 }

 

je, radi, fala stari :D, znaci strcmp je funkcija koja uspoređuje 2 varijable i onda ako stavim da je strcmp od 2 varijable == 0 on smatra da su varijable jednake ?

Nikad te necemo zaboraviti. RIP EnlightenedPhoenix 24.6.2011.
16 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori

Tako je, ako vrati 0 onda su isti stringovi

 

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

Tako je, ako vrati 0 onda su isti stringovi

 

super, naravno moze se koristit za uspoređivanje varijabli bilo kojeg tipa?

Nikad te necemo zaboraviti. RIP EnlightenedPhoenix 24.6.2011.
15 godina
offline
Programiranje u C++-u - pitanja i odgovori

uploada sam ga na z trening ali mi kaze passed 0/10 odnosno daje krivi rezultat za svih 10 primjera, a ja sam ga testira svim sto su oni dali za primjere i sto mi je ppalo na pamet a program radi :/

 

http://www.z-trening.com/submit.php?subm_stat=1&submit=7100262051

Nikad te necemo zaboraviti. RIP EnlightenedPhoenix 24.6.2011.
Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Kakvog smisla to ima? strcmp, kao što i samo ime kaže služi za usporedbu stringova. Ostale varijable se uspoređuju na klasičan način

 

if(a == b)...

http://www.chess.com/livechess/profile/Tracer1808
Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

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?

http://www.chess.com/livechess/profile/Tracer1808
Poruka je uređivana zadnji put pet 9.12.2011 12:34 (TracerCPP).
Moj PC  
0 0 hvala 0
15 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori



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

 

 

 

a ja za onaj gori dobivam 0/10 a meni radi ko sat sa svim njihovim primjerima

Nikad te necemo zaboraviti. RIP EnlightenedPhoenix 24.6.2011.
16 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Pozdrav programeri...eto počeli i mi programirat u školi,a pošto je profesorica ladna voda i ne zna objasnit,i još kud sam ja totalni početnik...imam nekih problema...kad napišem neki program i idem na compile & run izbaci mi ovu poruku "  The system cannot find the file specified "...

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

Koji ti je IDE?

Programming is understanding. – Kristen Nygaard
16 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Kao što rekoh totalni početnik i bilo bi dobro kad bi mi rekao šta je to IDE jer nemam pojma{#}

13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Programming is understanding. – Kristen Nygaard
17 godina
offline
Programiranje u C++-u - pitanja i odgovori

Ja bi taj zadatak za traženje kolinearnih točaka pokušao riješiti ovako:

- pošto znamo da su dvije točke uvijek kolinearne tražimo treću koja odgovara prvim dvjema

- računamo površinu trokuta za te tri točke, ako je površina 0, točke su na pravcu

povrsina = (1/2)[x1(y2- y3) + x2(y3- y1) + x3(y1- y2)]

- trostrukom petljom riješim kombinacije

- koji prolaz vanjske petlje ima najviše slučajeva gdje je površina trokuta 0 - to je najveći broj točaka na jednom pravcu,

ako je u prolazu vanjske petlje npr. brojač pokazao 5 - imamo 3 + 4 točke na pravcu.

 

Poruka je uređivana zadnji put pet 9.12.2011 22:31 (Floki).
 
0 0 hvala 0
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Kako da napravim jednostavni kruzic u C++ -u?

 

Buzzzzzzzzzzzzzzzzzzzzzzzzzz
17 godina
moderator
online
Re: Programiranje u C++-u - pitanja i odgovori
Games 4 life kaže...

Kako da napravim jednostavni kruzic u C++ -u?

Uzmi Javu i radi Java applet. {#} Ili bilo koji GUI framework koji ima nekakvu paintbox kontrolu. Igranje s grafikom, a da nije u sklopu GUI-ja, u C++-u je gubljenje vremena. Prvo bi si trebao naći neki framework koji ti omogućava korištenje grafike. Ne znam ni jednog takvog. Onda možda bolje da odmah ideš na DirectX.

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

Kako da napravim jednostavni kruzic u C++ -u?

Uzmi Javu i radi Java applet. {#} Ili bilo koji GUI framework koji ima nekakvu paintbox kontrolu. Igranje s grafikom, a da nije u sklopu GUI-ja, u C++-u je gubljenje vremena. Prvo bi si trebao naći neki framework koji ti omogućava korištenje grafike. Ne znam ni jednog takvog. Onda možda bolje da odmah ideš na DirectX.

 

preporucio bih ti OpenGL

17 godina
moderator
online
Re: Programiranje u C++-u - pitanja i odgovori
SaidSikiraX kaže...
mbaksa kaže...
Games 4 life kaže...

Kako da napravim jednostavni kruzic u C++ -u?

Uzmi Javu i radi Java applet. {#} Ili bilo koji GUI framework koji ima nekakvu paintbox kontrolu. Igranje s grafikom, a da nije u sklopu GUI-ja, u C++-u je gubljenje vremena. Prvo bi si trebao naći neki framework koji ti omogućava korištenje grafike. Ne znam ni jednog takvog. Onda možda bolje da odmah ideš na DirectX.

 

preporucio bih ti OpenGL

OpenGL je mrtav. {#}

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

Uzmi Javu i radi Java applet. {#} Ili bilo koji GUI framework koji ima nekakvu paintbox kontrolu. Igranje s grafikom, a da nije u sklopu GUI-ja, u C++-u je gubljenje vremena. Prvo bi si trebao naći neki framework koji ti omogućava korištenje grafike. Ne znam ni jednog takvog. Onda možda bolje da odmah ideš na DirectX.

Neću Javu, mrzim Javu, osječam se ograničeno u njoj... :D

DirectX...hmmm

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

Kako da napravim jednostavni kruzic u C++ -u?

 

nije li ovo ono što tražiš? http://www.syvum.com/cgi/online/serve.cgi/squizzes/cpp/cpp_p15a.html

samo, tu ima par problema, jer trebaš znati putanju za video drivere

nisam uspio kompajlirati..

 

 

nego da pitam jednu sitnicu koju sam susreo a neznam ju - u cpp fajlu imam includan library windows.h - e sada me zanima kak da ja  kompajliram na linuxu taj cpp?  

~21 god, ETFOS, Slavonac, linux and open source fan, net addict, želim znati više, interesi: web dev, svemir, glazba...
Poruka je uređivana zadnji put sub 10.12.2011 12:13 (kakapo).
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Moze mi neko pomoci gdje grijesim.. Koristim visual studio c++ 6.0

 

/* Napisati c program koji koristi switch naredbu za izbor aritmeticke operacije koja se izvodi sa dva broja */

#include<stdio.h>
void main ()
{
    char znak;
    float a,b,c;

printf("Unesite prvi broj : ");
scanf("%f",&a);
printf("Unesite operaciju + - / * ");
scanf("%c",&znak);
printf("Unesite drugi broj : ");
scanf("%f", &b);

switch (znak)
{
    case '+':
       c=a+b;
    break;
       case '-':
       c=a-b;
    break;
       case '/':
       c=a/b;
    break;
       case '*':
       c=a*b;
    break;


       default :
    printf("Niste unijeli tacan znak");
}
       printf("Rezultat je %d",c);

}

Prva druga peta ;) ;)
Poruka je uređivana zadnji put sub 10.12.2011 12:48 (aneLL).
Moj PC  
0 0 hvala 0
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Koristi int main, ne void, meni u C::B u izbaciva tu grešku, napiši:
int main({   kod   return 0;}

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

Moze mi neko pomoci gdje grijesim.. Koristim visual studio c++

Enter ti ostane u bufferu tipkovnice pa ti varijabla znak drži znak ASCII kôda 10. To si i sam mogao provjeriti tako da ispišeš upisani znak kod default! Dakle, Enter (znak 10) treba ručno ukloniti iz buffera tipkovnice:

 

/* Napisati c program koji koristi switch naredbu za izbor aritmeticke operacije koja se izvodi sa dva broja */

#include<stdio.h>
int main ()
{
    char znak;
    float a,b,c;

    printf("Unesite prvi broj : ");
    scanf("%f",&a);

    printf("Unesite operaciju + - / * ");
    scanf("%c",&znak);
   while (scanf("%c") == '\n');

    printf("Unesite drugi broj : ");
    scanf("%f", &b);

    switch (znak)
    {
        case '+':
           c=a+b;
           break;
        case '-':
           c=a-b;
           break;
        case '/':
           c=a/b;
           break;
        case '*':
           c=a*b;
           break;
        default :
           printf("Niste unijeli tacan znak - ASCII je: %d\n", (int)znak);
    }

    printf("Rezultat je %f\n",c);
    return 0;
}

 

PS obrati malo pažnju na indentaciju (razmake s lijeve strane) - ovo što si napravio u switchu je užas. {#} I ne nazivaj varijable slovom abecede - ako tražiš upis broja, onda nazovi varijablu broj. Ako ti treba varijabla za rezultat, onda je nazovi rezultat - a ne "c".

E-mail:
Lozinka:
 
vrh stranice