Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 40 odgovora
  • 15.251 pregleda

Najnovija ↓

c++ zadaci [zabava za sve] :D 28.11.2010. u 21:43 · pre 193 meseca #1
Pozz svima.Cilj ove teme je da zajedno postavljamo i resavamo zadatke.Onaj ko resi prethodni zadatak ,postavlja novi itd. :D
Milsim da ako svi uloze trud da ce biti zabavno.
Evo da krenemo:
Napraviti program koji od korisnika trazi unos stranica a i b jednog pravougaonika,a program treba da izracuna obim i povrsinu,a zatim da ispise te podatke.
Potpis
Nisam ginekolog ali mogu da pogledam. :D
Re: c++ zadaci [zabava za sve] :D 29.11.2010. u 07:10 · pre 193 meseca #2
A ja mislio da je cilj ove teme da se tebi uradi domaci zadatak.
Re: c++ zadaci [zabava za sve] :D 29.11.2010. u 07:32 · pre 193 meseca #3
evo:
Code:
#!/usr/bin/perl
use strict;
unless(@ARGV>1){print "unesi stranice kvadrata: $0 a b\n";exit}
my $a=shift(@ARGV);
my $b=shift(@ARGV);
print 'P='.$a*$b.', O='.2*($a+$b)."\n";
Potpis
Kap vode...
Re: c++ zadaci [zabava za sve] :D 29.11.2010. u 10:25 · pre 193 meseca #4
Nisi završio posao. Treba da postaviš novi zadatak.
Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Re: c++ zadaci [zabava za sve] :D 29.11.2010. u 21:29 · pre 193 meseca #5
Hehe,nije domaci,nego sam postavio ovu temu jer nigde na internetu ne mogu da pronadjem neke dobre zadatke iz programiranja pa sam odlucio da se ovde svi pomucimo malo xD.Hteo sam da zadaci krenu od onih laksih pa da svaki novi zadatak bude tezi.
Potpis
Nisam ginekolog ali mogu da pogledam. :D
Re: c++ zadaci [zabava za sve] :D 30.11.2010. u 10:57 · pre 193 meseca #6
Ako te interesuju ne-trivijalni problemi onda poseti http://uva.onlinejudge.org/ . Tu imaš obilje zadataka sa svih ACM takmičenja do sada, i sistem za proveru rešenja (server kompajlira tvoj sors i testira izvršavanje preko sopstvenih testnih primera). Ovaj sajt će te okupirati bar godinu dana (ako si stvarno dobar).
Re: c++ zadaci [zabava za sve] :D 30.11.2010. u 12:53 · pre 193 meseca
izmenjeno 1 put, poslednji put mihojla 01.12.2010. u 09:51
  1. mihojla01.12.2010. u 09:51zapis iz teksta poruke
#7
Citat:
Nisi završio posao. Treba da postaviš novi zadatak.
Program koji ce upisati brojeve od 1-125 u kocku 5x5x5 tako da zbir u svakoj koloni i svakom redu bude jednak.
Ignorišite ovaj zadatak jer ni ja nisam uspeo da ga rešim.
Potpis
Kap vode...
Re: c++ zadaci [zabava za sve] :D 01.12.2010. u 10:24 · pre 193 meseca #8
Evo jednog tek toliko za zagrijavanje :)

Neka u programu postoji 1000 funkcija koje se sve redom zovu

void f1();
void f2();
...
void f1000();

Napiši program koji slučajnim odabirom poziva jednu od njih. Tijela funkcija su nebitna.
Re: c++ zadaci [zabava za sve] :D 01.12.2010. u 11:49 · pre 193 meseca #9
moze ako su funkcije dll exported ;)

Code (cpp):


extern "C" {
    __declspec(dllexport) char* f1() { return "F1"; }
    ...
    __declspec(dllexport) char* f999() { return "F999"; }
    __declspec(dllexport) char* f1000() { return "F1000"; }
}

typedef char* (*RandomFunc)();


int _tmain(int argc, _TCHAR* argv[])
{
     unsigned int r;
     char fname[5];
     rand_s(&r);
     r = (r % 999) + 1;
     sprintf_s(fname, "f%i", r);
     HMODULE hm = GetModuleHandleA("Random1000.exe");
     RandomFunc f = (RandomFunc)GetProcAddress(hm, fname);
     DWORD xx = GetLastError();
     std::cout << f();
     return 0;
}
 


moze i iz current PIDa da se izvuce process exe, da bude bas "univerzalno" ;)
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: c++ zadaci [zabava za sve] :D 01.12.2010. u 12:06 · pre 193 meseca #11
Tja, nije to to :) sta da vam radim kad nemate refleksiju ;) Inace, ima 1000 funkcija, znaci 1000 dodatnih linija koda.
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: c++ zadaci [zabava za sve] :D 01.12.2010. u 12:15 · pre 193 meseca
izmenjeno 1 put, poslednji put mmix 01.12.2010. u 12:28
  1. mmix01.12.2010. u 12:28zapis iz teksta poruke
#12
Zar je ovo C/C++ code:

#!/usr/bin/perl
use strict;
unless(@ARGV>1){print "unesi stranice kvadrata: $0 a b\n";exit}
my $a=shift(@ARGV);
my $b=shift(@ARGV);
print 'P='.$a*$b.', O='.2*($a+$b)."\n";


Mislio sam da znam bar osnovnu sintaksu C/C++ !!!

U čemu je stvar, ne pratim toliko Standard ali sumnjam da se toliko promenilo? Je li ovo Perl?

Evo jedan sa školskog takmičenja:

Dat je niz A od N prirodnih brojeva (N<=500) . Napisati program kojim se ispisuje indeks onog elementa u nizu
A za koji je zbir elemenata niza koji stoje pre tog elementa najmanje razlikuje od zbira elemenata niza koji stoje posle njega.

Moja verzija rešenja je ( indeks koji se ispisuje je matematički, veći je za 1 od indeksa u C++ nizu jer ne počinje od 0 ):

Code (cpp):
#include<iostream>
#include<cmath>
using namespace std;
int main(){
    int a[500],razlika[500],N,i,j,k,m,s,min,leva,desna;
    cout<<"Unesite broj elemenata niza (manji od 500): ";
    cin>>N;
    for(i=0;i<N;i++){
          cout<<"a["<<i<<"]= ";
          cin>>a[i];}
    razlika[0]=10000;
    razlika[N-1]=10000;
    for(i=1;i<N-1;i++){
       leva=0;
       desna=0;
          for(j=0;j<i;j++){
               leva += a[j];}
          for(m=i+1;m<N;m++){
               desna += a[m];}
          razlika[i]=abs(desna - leva);}
    for(s=0;s<N;s++){  //samo ispisuje niz razlika[],provere radi
          cout<<"razlika["<<s<<"]= "<<razlika[s]<<endl;}
          min = razlika[1];
    for(i=0;i<N;i++){
         if(razlika[i]< min){
              min = razlika[i];}}
    for(i=0;i<N;i++){
      if( razlika[i]==min){k=i+1;} }
    cout<<"Broj indeksa je: "<<k<<endl;
    system("PAUSE");
    return 0;
}


Ima li neko savet za optimizaciju, osim onog vezanog za veliki broj promenljivih, to sam namerno ubacio?
Re: c++ zadaci [zabava za sve] :D 01.12.2010. u 12:24 · pre 193 meseca #13
Slažem se sa Mihajlom Cvetanovićem. Ako je skup funkcija fiksan, onda se radi tako. Nema potrebe za refleksijom. Inače, tih 1000 linija koda je lako mašinski generisati.

Code:
// ...

void f1() {
    cout << 1 << endl;
}

void f2() {
    cout << 2 << endl;
}

// ...

void f1000() {
    cout << 1000 << endl;
}

typedef void (*Function)();

Function func[1000] = {
    f1,
    f2,
// ...
    f1000
};

// ...

    func[rand()%1000]();

// ...
Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Re: c++ zadaci [zabava za sve] :D 01.12.2010. u 12:28 · pre 193 meseca #14
Jak vam onda problem, to i pocetnici umeju :)
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: c++ zadaci [zabava za sve] :D 01.12.2010. u 12:40 · pre 193 meseca #15
@Strojko
Code:
#include <iostream>
#include <cstdlib>

using namespace std;

int a[501];
long long suma = 0;

int main(int argc, char *argv[]) {
    a[0] = 0;
    
    for (int i = 1; i <= 500; ++i) {
        cout << i << ". " << flush;
        cin >> a[i];
        suma += a[i];
    }
    
    long long int razlika = -suma;
    long long int minimum = abs(razlika);
    int indeks = 0;
    
    for (int i = 1; i <= 500; ++i) {
        razlika += a[i-1] + a[i];
        
        if (abs(razlika) <= minimum) {
            minimum = abs(razlika);
            indeks = i;
        }
    }
    
    cout << indeks << endl;
    
    return EXIT_SUCCESS;
}

Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Re: c++ zadaci [zabava za sve] :D 01.12.2010. u 12:45 · pre 193 meseca #16
Citat:
mmix: Jak vam onda problem, to i pocetnici umeju :)


Pa, dobro, imaš i jači, pa se pokaži

Citat:
mihojla: Program koji ce upisati brojeve od 1-125 u kocku 5x5x5 tako da zbir u svakoj koloni i svakom redu bude jednak.

Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Re: c++ zadaci [zabava za sve] :D 01.12.2010. u 14:32 · pre 193 meseca #18
@miki208
Citat:
Hehe,nije domaci,nego sam postavio ovu temu jer nigde na internetu ne mogu da pronadjem neke dobre zadatke iz programiranja pa sam odlucio da se ovde svi pomucimo malo xD.Hteo sam da zadaci krenu od onih laksih pa da svaki novi zadatak bude tezi.

evo zadatka za zagrevanje.
1.Napisi program koji ce ti prikazati prvih 15 elemenata Fibonicijevog niza: Fibonaccijev niz je niz brojeva sa osobinom da je svaki član niza osim prava dva jednak zbiru predhodna dva člana 1, 1, 2, 3, 5...
2.Napisi program kojim ces zameniti mesta elementima matrice:
a)preko glavne dijagonale
b)preko sporedne dijagonale

Re: c++ zadaci [zabava za sve] :D 01.12.2010. u 21:23 · pre 193 meseca #19
Evo prvi zadatak moze ovako da se resi:
Code:

#include <iostream.h>
#include <cstdlib>

using namespace std;
int main(){
   unsigned long next=0;
   unsigned long last=1;
   int i=0;
   long zbir;
   while(i<15)
   {
      i++;
      cout<< last << endl;
      zbir=next+last;
      next=last;
      last=zbir;
   }
   system("PAUSE");
   return 0;
}
   
Potpis
Nisam ginekolog ali mogu da pogledam. :D
Re: c++ zadaci [zabava za sve] :D 01.12.2010. u 23:10 · pre 193 meseca #20
@miki208
Evo ti jedan primer, takodje za vezan za fibinicijev niz.Ukucas redni broj elementa u nizu a program ti izbaci koji je to element.Problem je resen rekurzijom.
Ovaj primer je iz knjige Jesse Liberty.
Code:
     
     #include <iostream>
     using namespace std;
     int fib(int n);
    int main()
    {
      int n, answer;
      cout << "Enter number to find: ";
      cin >> n;
      cout << "\n\n";
      answer = fib(n);
      cout << answer << " is the " << n << "th Fibonacci number\n";
         return 0;
    }
    int fib (int n)
    {
      cout << "Processing fib(" << n << ")... ";

      if (n < 3 )
      {
         cout << "Return 1!\n";
         return (1);
      }
      else
      {
        cout << "Call fib(" << n-2 << ") and fib(" << n-1 << ").\n";
        return( fib(n-2) + fib(n-1));
      } 
 }

Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme