Koliko dobro znate c++?

poruka: 43
|
čitano: 5.549
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
16 godina
neaktivan
offline
Koliko dobro znate c++?

Eo par pitanja:

1.Autor(itf4n)

Navedi tocan razlog zbog kog se ovaj program rusi:

 

char tekst[] = "abc";
int f = 31415;
for (int k = 0; k < sizeof(tekst); ++k)
{
    f *= tekst[k];
    f /= tekst[k];
    f -= tekst[k];
    f += tekst[k];
}

 

2.(Autor ja)

S tipkovnice su unesen dva decimalna broja primjerice "315.152", pohranjena u memoriju i zatim uzeta iz memorije, prvi pomnozen s drugim a rezultat ispisan.
Sve je to napravljeno bez da ste deklarirali varijablu tipa float,double i long bilo gdje u kodu.Sve je odradjeno unutar funkcije main i kod ima svega 3 reda, kako?

 

3.(Nezna se)

Kako zamjeniti mjesta dvama promjenjivim varijablama bez deklaracije trece?

 

4.(Autor ja)

Dali je u c++u moguće napisati program koji će izvesti funkciju i nakon toga prestati s radom bez da se funkcija main pokrene?

Podkrijepi kodom.

 

5.(Autor ja)

Funkcija main izgleda ovako:


int main()
{
cout<<"Tekst"<<endl;
return 0;
}


Nakon ispisa, program je odjednom zatražio od vas da unesete svoj broj mobitela. wtf? kako je to moguće? (obrazloži i napiši kod) dali je vaš program postao samosvjesna sexy mačkica?

 

6.Autor(itf4n)

U C++ datoteci izvornog koda, unutar funkcije main(), pozvana je neka druga funkcija.
Nigdje prije main-a nije deklarirana/definirana ta funkcija. Niti jedan header nije uključen. Nije korišten drugi programski jezik. Ne radi se o standardnoj funkciji. Ne radi se ni o C++ operatorima koji izgledaju kao funkcije (sizeof, typeid). Kod se prevodi bez grešaka.

Kako je to moguće?

 

 

p.s.

itf4n i DragonSoul se nesmiju natjecati ;)

Poruka je uređivana zadnji put uto 28.4.2009 2:38 (Fpx-studio).
 
0 0 hvala 0
16 godina
offline
RE: Koliko dobro znate c++?

Zadatak 1: Petlja ide krivo:

 

for (int k = 0; k < sizeof(tekst); ++k)

 

treba ovako

 

for (int k = 0; k < sizeof(tekst)-1; ++k)

 

zbog null znaka koji je na kraju, pa puca kada se dijeli s nulom,  u f /= tekst[k];

 

Zadatak 3:

 

a=a+b;
b=a-b;
a=a-b;

 

Zadatak 4:

 

class CFirstExec
{
public:
    CFirstExec()
    {
        //odradi neki posao...
       
        cout << "Nesto se radi...";

        exit(0);
    }
};

CFirstExec objFirst;//globalni objekt, kreira se prije main, u konstruktoru izlaz iz programa


int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}

Poruka je uređivana zadnji put uto 28.4.2009 9:52 (CalvinRi).
16 godina
neaktivan
offline
RE: Koliko dobro znate c++?
CalvinRi kaže...

Zadatak 1: Petlja ide krivo:

 

for (int k = 0; k < sizeof(tekst); ++k)

 

treba ovako

 

for (int k = 0; k < sizeof(tekst)-1; ++k)

 

zbog null znaka koji je na kraju, pa puca kada se dijeli s nulom,  u f /= tekst[k];

1.)
Bravo. Djeljenje s nulom nije definirano.
p.s
Imas strlen koji nece brojati '\0',ovdje je sizeof s razlogom.

3.) Svatko moze provjeriti. To je jedno od rijesenja.

4.) Da.
Poruka je uređivana zadnji put uto 28.4.2009 9:52 (Fpx-studio).
16 godina
neaktivan
offline
RE: Koliko dobro znate c++?

Vidim da ste već većinu riješili ali evo drugi koji je preskočen a neka malo budu drugi duže u igri.

 

#include<iostream>
using namespace std;
int main()
{
  cout<<55.55<<endl;
  cout<<55.55<<endl;
  cout<<"rezultat umnoska : "<<55.55 * 55.55<<endl;
  return 0;
}
Eto tri reda.

Private
16 godina
offline
RE: Koliko dobro znate c++?

3.

 

a=a^b

b=a^b

a=a^b

 

et voila, a je be, a be je a :) Veze s C++-om nema

16 godina
neaktivan
offline
RE: Koliko dobro znate c++?
Private kaže...

Vidim da ste već većinu riješili ali evo drugi koji je preskočen a neka malo budu drugi duže u igri.

 

#include<iostream>
using namespace std;
int main()
{
  cout<<55.55<<endl;
  cout<<55.55<<endl;
  cout<<"rezultat umnoska : "<<55.55 * 55.55<<endl;
  return 0;
}
Eto tri reda.

Hajde molim te procitaj pazljivo pitanje.
Nisi niti blizu.
16 godina
neaktivan
offline
RE: Koliko dobro znate c++?
kenozoik kaže...

3.

 

a=a^b

b=a^b

a=a^b

 

et voila, a je be, a be je a :) Veze s C++-om nema

 
Znam da nema.. xD al ono..
Dakle:
a ^= b ^= a ^= b;
ili
a -= b += a -= b = -b;
Poruka je uređivana zadnji put uto 28.4.2009 9:58 (Fpx-studio).
16 godina
offline
RE: Koliko dobro znate c++?

Zadatak 5:

 

class CFirstExec
{
public:
    CFirstExec()
    {
    }

    ~CFirstExec()
    {
       
        cout << "Daj broj telefona:";
        int x;

        cin>>x;
    }
};

CFirstExec objFirst;


int _tmain(int argc, _TCHAR* argv[])
{
    cout<<"Tekst"<<endl;

    return 0;
}

16 godina
neaktivan
offline
RE: Koliko dobro znate c++?
CalvinRi kaže...

Zadatak 5:

 

class CFirstExec
{
public:
    CFirstExec()
    {
    }

    ~CFirstExec()
    {
       
        cout << "Daj broj telefona:";
        int x;

        cin>>x;
    }
};

CFirstExec objFirst;


int _tmain(int argc, _TCHAR* argv[])
{
    cout<<"Tekst"<<endl;

    return 0;
}

 Nema obrazlozenja. Ali svima koima nije jasno, destruktor se poziva kad objekt izlazi iz opticaja a buduci da je rijec o kraju programa, sve na globalnom podrucju se unistava.
17 godina
protjeran
offline
RE: Koliko dobro znate c++?

odgovor pod 3.

 

int a; int b

_asm

{

   swap a, b

}

 

ili

 

-asm

{

  push a

  push b

 

 pop a

 pop b

} ili tako nešto s stackom. :-D

Programko http://programko.bloger.hr
Poruka je uređivana zadnji put uto 28.4.2009 10:20 (Programko).
17 godina
protjeran
offline
Koliko dobro znate c++?

Drugi zadatak mi se ne čini jasno postavljen. Primjer izvođenja? Što se točno traži u zadatku? Da se bez upotrebe varijabli pomnože dva broja? Sve mi se čini da je ovdje riječ o nečemu s flush funkcijom...

 

Treći zadatak nije dobar. Zaboravili ste na preljev pa na zamjeni velikih brojeva ova rješenja neće biti dobra ;)

 

4. zadatak:

 

#include <stdio.h>
#define decode(s,t,u,m,p,e,d) m##s##u##t
#define begin decode(a,n,i,m,a,t,e)

int begin()   {
   printf(" hello world");
}

 

6. zadatak:

 

#include <stdio.h>
#define f() printf("fja....");

int main(){
   f();
   return 0;
}

 

 

ostatak ste riješili :)

Poruka je uređivana zadnji put uto 28.4.2009 18:45 (Tracer).
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
RE: Koliko dobro znate c++?

Slažem se za ovo o drugom zadatku ,ako se dobro pročita kako kaže autor ,može se manipuliati s adresama ili funkcijama ali nejasan jest,zato sam tako i napisao.

Inače ,ideja o ovakvim malim izazovima je odlična.

 

Private
17 godina
neaktivan
offline
Koliko dobro znate c++?

Evo jedno meni drago:

 

Kako bi napisali metodu koja od dva objekta vraća veći?

 

npr.

std :: cout << veci (3, 7) << "\n" ;   - rezultat je 7

std :: cout << veci (3.1 , 7.1) << "\n"; - rezultat je 7.1

 
0 0 hvala 0
17 godina
protjeran
offline
RE: Koliko dobro znate c++?

Valjda misliš na ovo?

 

template <class T> T veci(T a, T b){
    return (a > b) ? a : b;
}

Poruka je uređivana zadnji put uto 28.4.2009 23:06 (Tracer).
16 godina
neaktivan
offline
RE: Koliko dobro znate c++?
Tracer kaže...

Drugi zadatak mi se ne čini jasno postavljen. Primjer izvođenja? Što se točno traži u zadatku? Da se bez upotrebe varijabli pomnože dva broja? Sve mi se čini da je ovdje riječ o nečemu s flush funkcijom...

 

Treći zadatak nije dobar. Zaboravili ste na preljev pa na zamjeni velikih brojeva ova rješenja neće biti dobra ;)

 

4. zadatak:

 

#include <stdio.h>
#define decode(s,t,u,m,p,e,d) m##s##u##t
#define begin decode(a,n,i,m,a,t,e)

int begin()   {
   printf(" hello world");
}

 

6. zadatak:

 

#include <stdio.h>
#define f() printf("fja....");

int main(){
   f();
   return 0;
}

 

 

ostatak ste riješili :)

 
2. Znaš kako nastavnica uvijek kaže,ono što ti nije jasno pokušaj pročitati polako. Ako ti ni tad nebude jasno,jednostavno neznaš. Pitanje je postavljno tako da odgovor nije lako odgonetnuti.
3. Teoretski se može dogoditi da ti izgori napajanje...onda ti niti jedan program neće raditi..
4. Ne.
5. Definitivno ne.

Poruka je uređivana zadnji put uto 28.4.2009 23:35 (Fpx-studio).
17 godina
protjeran
offline
RE: Koliko dobro znate c++?
Fpx-studio kaže...
Tracer kaže...

Drugi zadatak mi se ne čini jasno postavljen. Primjer izvođenja? Što se točno traži u zadatku? Da se bez upotrebe varijabli pomnože dva broja? Sve mi se čini da je ovdje riječ o nečemu s flush funkcijom...

 

Treći zadatak nije dobar. Zaboravili ste na preljev pa na zamjeni velikih brojeva ova rješenja neće biti dobra ;)

 

4. zadatak:

 

#include <stdio.h>
#define decode(s,t,u,m,p,e,d) m##s##u##t
#define begin decode(a,n,i,m,a,t,e)

int begin()   {
   printf(" hello world");
}

 

6. zadatak:

 

#include <stdio.h>
#define f() printf("fja....");

int main(){
   f();
   return 0;
}

 

 

ostatak ste riješili :)

 
2. Znaš kako nastavnica uvijek kaže,ono što ti nije jasno pokušaj pročitati polako. Ako ti ni tad nebude jasno,jednostavno neznaš. Pitanje je postavljno tako da odgovor nije lako odgonetnuti.
3. Teoretski se može dogoditi da ti izgori napajanje...onda ti niti jedan program neće raditi..
4. Ne.
5. Definitivno ne.

 1. Očito je samo tebi jasno što zadatak traži jer više se ljudi javilo da ne kuže o čemu uopće zadatak govori. A to koliko ja neznam... pa neznam. Tko bi znao što je pjesnik htio reći tim zadatkom kad ga nije niti definirao kako treba. Npr., piše o dva ulazna podatka a unese samo jedan, nema primjera korištenja niti ikome drugome je uopće jasan zadatak. Možda bi se onda autor zadatka trebao malo razmisliti prije nego krene kritizirati druge i praviti se pametan.

2. Ne govorim o nikakvim teorijama već o praktičnoj primjeni. Ta rješenja ne valjaju i točka.

3. Četvrti zadatak je točan. Barem provjeri ili pitaj ako ti nije jasno.

4. Svakako da.
Poruka je uređivana zadnji put uto 28.4.2009 23:44 (Tracer).
17 godina
offline
Koliko dobro znate c++?

@Tracer - traži se poziv prave, C++ovske funkcije (6. zad) :)

 
0 0 hvala 0
17 godina
protjeran
offline
RE: Koliko dobro znate c++?
itf4n kaže...

@Tracer - traži se poziv prave, C++ovske funkcije (6. zad) :)

 Onda mi zadatak nije jasan pošto bi funkcija negdje trebala biti deklarirana. Na što se onda točno misli? Primjer?
17 godina
offline
Koliko dobro znate c++?

Hehe, tu je caka. Nekako je pozvana ali nigdje prije main()a nema deklaracije, a nisu korištene makro naredbe.

 
0 0 hvala 0
16 godina
neaktivan
offline
RE: Koliko dobro znate c++?

E vidis. Prvo neznaš što su lokalne klase,a niti čitaš pažljivo. Piše da ništa nije prije maina.

 

17 godina
protjeran
offline
RE: Koliko dobro znate c++?
Fpx-studio kaže...

E vidis. Prvo neznaš što su lokalne klase,a niti čitaš pažljivo. Piše da ništa nije prije maina.

 

 A pa tako onda reci. Otvorio si topic kako bi se mogao praviti pamet i drugima soliti pamet Namigiva. Ne kanim u takvim igrama sudjelovati.

@itf4n

int main(int argc, char* argv[])
{
    class x{
        public:
        void f(){
            cout << "f";
        }
    }a;
    a.f();
    cin.get();
    return 0;
}

iako, ovo nije čista funkcija već metoda.

Poruka je uređivana zadnji put uto 28.4.2009 23:58 (Tracer).
16 godina
neaktivan
offline
RE: Koliko dobro znate c++?

De dobro je. xD Piše ti koje autor tog pitanja,a ispitujemo c++ i morao bi znati nešto o lokalnim klasama.

A za ono pitanje gdje ti nije jasno piše primjerice "315.152"  dakle primjer. Moraš uzeti dva broja s tipkovnice,  pohranit u memoriju,a zatim ih pomnožiti  te na poslijetu ispisati rezultat.

17 godina
protjeran
offline
RE: Koliko dobro znate c++?

...učitam svaki broj kao string i konverzijama ispišem rezultat množenja?

16 godina
neaktivan
offline
RE: Koliko dobro znate c++?

" Prvo neznaš što su lokalne klase,a niti čitaš pažljivo"
....hm kako lagano zaključuješ da netko ne zna...a ovdje ima ljudi koji bi tebi zadali zadatak i ne bi pojma imao jer je postavljen

tako da stvarno može zbuniti svakoga ,a zaključci su prebrzi...prema tome ne zaključuj prebrzo pa će topic biti dobar a ti kao autor

ne prepametan u odnosu na druge.....jer topic je zanimljiv u smislu čudnih i dobrih zadataka.

 

Private
17 godina
protjeran
offline
Koliko dobro znate c++?

Evo jednog zadatka kojeg sam ja imao na natjecanju iz programiranja. Nedavno sam ga opet riješio i stavio rješenje pa oni koji su ga vidjeli (itf4n) ne trebaju ga rješavati ili neka ga riješe na drugi način.

 

Zadatak: Napiši program koji će ispisati koliko palindroma ima zadani niz znakova. (Palindrom je niz znakova koji se čita isto s lijeva i s desna).

 

Npr.

 

Krk

rotor

anavolimilovana

 

Ako se u programu unese ANAVOLIMILOVANA onda program izbacuje 9. Znači 9 palindroma:

 

ANAVOLIMILOVANA

ANA

NAVOLIMILOVAN

AVOLIMILOVA

VOLIMILOV

OLIMILO

LIMIL

IMI

ANA

Poruka je uređivana zadnji put sri 29.4.2009 0:32 (Tracer).
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
Koliko dobro znate c++?

Nije mi to u cilju.

Slobodno svi postavljejte pitanja. Ja sam imo neka pa sam ih naredo.

Definitivno se nezelim pametariti.

p.s.

Isto kao brzi zakljucak da zadatci nevaljaju ;-)

 
0 0 hvala 0
16 godina
offline
RE: Koliko dobro znate c++?

Ajde mi molim te objasni kako to dolazi do preljeva kod XOR-anja? Mislim da si malo zabrijo...

17 godina
protjeran
offline
Koliko dobro znate c++?

Nažalost više se ne sjećam točnih testnih podataka pa da mogu pokazati. Uglavnom, stvar je baš specifična. Kada su nam na FERu dali taj zadatak i osobno sam ga riješio na oba gore navedena načina, ali pokazali su da nije točno za te određene situacije. Budem još potražio po net-u jer sam na još jednom mjestu vidio točno obrazloženje kako i zašto ali sada ga jednostavno ne mogu pronaći. Možda glupo ispada ali što mogu... Samo znam da sam vidio svojim očima da nije prošlo.

Poruka je uređivana zadnji put sri 29.4.2009 10:17 (Tracer).
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
RE: Koliko dobro znate c++?

Klasicna jednostavna dinamika (rjesenje slozenosti O(N^2)). Definirajmo funkciju f(start, kraj) koja ce, ako je S[start] == S[kraj] ispisati palindrom i pozvati f(start-1, kraj+1). Iz maina pozivamo f(0,0), f(0,1), f(1,1), f(1,2), f(2,2), f(2,3) ... f(n-2, n-1), f(n-1,n-1) itd.

 

Evo jedan pinkicu tezi. Imamo neki string, duzine N (<= 300,000). Takodjer imamo M (<=4,000) rijeci duzine do 100. Potrebno je pronaci na koliko se razlicitih nacina tekst moze rastaviti na rijeci iz zadanog skupa modulo 1,000,000,007.

Primjer:

Unos

12

ovojeprimjer

5

ovo

je

primjer

jeprimjer

ovojeprimjer

 

Ispis

3

 

(to su ovo-je-primjer; ovo-jeprimjer; ovojeprimjer - ne treba ispisati).

I da, brute-force rjesenje je presporo ;).

 

EDIT: glup sam ;)

Sa štovanjem, brahle!
Poruka je uređivana zadnji put sri 29.4.2009 23:31 (brahle).
16 godina
neaktivan
offline
RE: Koliko dobro znate c++?

Pada ti ako je a=b.

Sa štovanjem, brahle!
Nova poruka
E-mail:
Lozinka:
 
vrh stranice