C++ - riješite mi zadatke za kolokvij

poruka: 19
|
čitano: 9.116
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
Pomoć za kolokvij

Ako moze pomoc u rjesavanju ovih zad. Ovo je za ispit iz racunala i programiranja, meni ono bas neide a vidili smo na kol da bas dolaze ovi zad koji sluze kao primjer, pa bi vas zamolipo za pomoc u rjesavanju.

Ovo su zadaci. Hvala unaprijed

 

1.  Napišite program koji ispisuje rezultat sume prvih 1000 članova reda:
  
....
4
1
3
1
2
1
1 2 2 2
 
  (1 bod)
2.  Napišite program u kojem pomoću bitovnih operatora zamijenjujete neparan broj
sa parnim!  
(1 bod)
3.  Napišite program u kojem ćete pomoću bitznačajnih operatora odrediti jesu li dva
broja jednake parnosti!
  (1 bod)
4.  Inicijalizirajte tablicu i ispišite sumu vrijednosti  donjeg lijevog  trokuta (vidi
sliku!). Uključiti članove na dijagonali.
  
X      
X  X    
X  X  X  
X  X  X  X
  (2 boda)
5.  Korištenjem bitzačajnih operatora ispišite one težinske vrijednosti učitanog broja
na kojima su bitovi broja postavljeni u 1!
  (2 boda)
6.  Napišite program u kojem morate učitati dva niza od po 5 brojeva i ispišite tablicu
sastavljenu od svih njihovih zbrojeva!
  (2 boda)
7.  Napišite program koji učitava slova sa tipkovnice dok se ne unese znak za EOF i
ispisuje koliko ima samoglasnika!
  (2 boda)
8.  Napišite program koji sa tipkovnice prihvaća 100 brojeva. Ukoliko korisnik unese
znak koji nije broj, izbacite taj znak iz niza i osigurajte neometan unos do kraja.
Program mora ispisati sumu svih unesenih brojeva!
  (2 boda)
9.  Napišite program u kojem inicijalizirate tri niza od po 5 članova, a zatim
formirajte novi niz od 5 članova sastavljen od  minimalnih  vrijednosti
odgovarajućih članova triju nizova koji imaju isti indeks.
  (3 boda)
10. Napišite program u kojem pomoću bitznačajnih operatora mijenjate paran broj u
neparan, ali tako da rezultat bude za 1 manji od odgovarajućeg parnog broja.
Objasnite algoritam!
  (3 boda)

Moj PC  
0 1 hvala 0
15 godina
offline
Re: Pomoć za kolokvij

 

Evo za prva tri zadatka:

 

 

1. Dakle imamo broj niz od 1000 brojeva 1+1,1+2,1+3...1+500. Uvijek 1 + neki broj pa tako redom. Možemo primjetiti da je najmanji član 1, a najviši član 500. Uglavnom vrlo jednostavno za izračunati:

 

 

#include <iostream>

 

using namespace std;

 

int main()

{

   int a=0,x=0;

   for(x=1;x<=500;x++){

     a+=(x+1);

   }

   cout<<a<<endl;

   return 0;

}

 

2. Ako imamo neki binarni broj primjetit ćemo da da kad pretvaramo iz binarno u dekadski idemo ovako:

10111=1*24 +0*23+1*22+1+1*21+1*20 =16+4+2 +1  Dakle posjeljdna znamenka binarnog odlučuje je li broj paran ili neparan. Zato što samo posljednja znamenka može imati vrijednost 1 tj. samo ona ima mogućnost da bude neparan broj. Pa zato moramo ako želimo provjeriti parnost broja moramo provjeriti je li zadnja znamenka u binarnome zapisu 1 ili nula. To ćemo učiniti preko binarnoga operatora i(&). Napraviti ćemo masku oblika 000116. Ako je broj neparan umanjit ćemo ga za 1 i to je to Pa će to izgledati ovako:

 

 

#include <iostream>

 

using namespace std;

 

int main()

{

   int a,mask;

   cin>>a;

   mask=0x0001;

   if((a&mask)==1){

     a=a-1;

   }

   cout<<a<<endl;

   return 0;

}

 

3. Dakle isto kao i gore. Akobrojevi imaju jednaku parnost iamti će jednak završetak:

#include <iostream>

 

using namespace std;

 

int main()

{

   int a,b,mask;

   cin>>a>>b;

   mask=0x0001;

   if((a&mask)==(b&mask)){

     cout<<"Brojevi su jednake parnosti!"<<endl;

   }

   else{

     cout<<"Brojevi su razlicite parnosti"<<endl;

   }

   return 0;

}

Sad ću ti ove druge uraditi. No molim te da se prihvatiš knjige jer ako ovakve jednostavne primjere na  fakultetu ne znaš rješiti zapitaj se je li to pravi fakultet za tebe.

 

 

Unatoč glupome nadimku kojeg ne mogu promijeniti,ne igram CoD i sl.
17 godina
offline
Pomoć za kolokvij

Evo ti 9., a ovaj ispod pokušaj sam uz hintove

 

 

 

#include <iostream>

using namespace std;

 

 

int main()

{

int niz1[5], niz2[5], niz3[5], noviNiz[5];

 

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

{

cout<< "Unesi " << (i+1) << ". clan prvog niza: ";

cin>> niz1[i];

}

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

{

cout<< "Unesi " << (i+1) << ". clan drugog niza: ";

cin>> niz2[i];

}

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

{

cout<< "Unesi " << (i+1) << ". clan treceg niza: ";

cin>> niz3[i];

}

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

{

noviNiz[i] = (niz1[i]<niz2[i]) ? (niz1[i]<niz3[i]) ? niz1[i] : niz3[i] :

(niz2[i]<niz3[i]) ? niz2[i] : niz3[i];

}

cout<< "Novi niz : ";

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

{

cout<< noviNiz[i] << " ";

}

return 0;

}

 

Poruka je uređivana zadnji put sub 12.2.2011 19:01 (Floki).
 
1 0 hvala 0
15 godina
neaktivan
offline
Pomoć za kolokvij

ajme, ispricavan se ja san totalno zaboravia napisati da bi ovo trebalo napisati u c++. mozda ovo i je u c++ ali meni nepoznato. isprika jos janput.

Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Re: Pomoć za kolokvij
kagu kaže...

ajme, ispricavan se ja san totalno zaboravia napisati da bi ovo trebalo napisati u c++. mozda ovo i je u c++ ali meni nepoznato. isprika jos janput.

Je, to je c++

 

ffs floki "? i :", zar si bas morao? xD

Look at you, hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?
17 godina
offline
Re: Pomoć za kolokvij
rustweaver kaže...
kagu kaže...

ajme, ispricavan se ja san totalno zaboravia napisati da bi ovo trebalo napisati u c++. mozda ovo i je u c++ ali meni nepoznato. isprika jos janput.

Je, to je c++

 

ffs floki "? i :", zar si bas morao? xD

zašto ne, sa tri varijable uvjetni operator ? radi bez problema, petlja prolazi 5 polja i u svakoj iteraciji se vrše dvije provjere i dodaje min vrijednost novom polju,

ako može kraće od formule "jedna petlja + dvije provjere", molim lijepo, volio bih vidjeti.

 

Poruka je uređivana zadnji put ned 13.2.2011 12:23 (Floki).
14 godina
neaktivan
offline
Re: Pomoć za kolokvij
Floki kaže...
rustweaver kaže...
kagu kaže...

ajme, ispricavan se ja san totalno zaboravia napisati da bi ovo trebalo napisati u c++. mozda ovo i je u c++ ali meni nepoznato. isprika jos janput.

Je, to je c++

 

ffs floki "? i :", zar si bas morao? xD

zašto ne, sa tri varijable uvjetni operator ? radi bez problema, petlja prolazi 5 polja i u svakoj iteraciji se vrše dvije provjere i dodaje min vrijednost novom polju,

ako može kraće od formule "jedna petlja + dvije provjere", molim lijepo, volio bih vidjeti.

 

 

Teško je čitljiv kod kad se koristi puno operatora ?. Nikad sam vidio korištenje ? više od dvaput zaredom. Premda korištenjem 'if'-ova ima više linija, no to ne znači da je program sporiji. Naprotiv, kompajler ce isto prevesti kod s 'if'-ovima i '? operatorima'. 

Divide et Impera! ( :
17 godina
offline
Pomoć za kolokvij

 

noviNiz[i] = (niz1[i]<niz2[i]) ? (niz1[i]<niz3[i]) ? niz1[i] : niz3[i] :

(niz2[i]<niz3[i]) ? niz2[i] : niz3[i];

 

Ovo ne bi trebalo biti teško čitljivo

npr:

niz1: 5 4 3 2 1

niz2: 2 8 4 5 3

niz3: 4 1 8 7 5

 

 

prva iteracija:

(5<2) false - ide na (2<4) true - izabira 2

Poruka je uređivana zadnji put ned 13.2.2011 12:53 (Floki).
 
0 0 hvala 0
14 godina
neaktivan
offline
Re: Pomoć za kolokvij
Floki kaže...

 

noviNiz[i] = (niz1[i]<niz2[i]) ? (niz1[i]<niz3[i]) ? niz1[i] : niz3[i] :

(niz2[i]<niz3[i]) ? niz2[i] : niz3[i];

 

Ovo ne bi trebalo biti teško čitljivo

npr:

niz1: 5 4 3 2 1

niz2: 2 8 4 5 3

niz3: 4 1 8 7 5

 

 

prva iteracija:

(5<2) false - ide na (2<4) true - izabira 2

Ma razumijem ja tvoj kod (samo treba pozorno pratit '?' i ':') i ne želim utjecat na tvoj način pisanja. Svak ima svoj način itd. Ali naslov teme je pomoć za kolokvij. To znači da pokretač teme ima problema, i nije bas prikladno da mu ubacis grananje ? operatora. :D
Pomocu if-ova bi bilo vise linija, ali bi vrlo vjerojatno @kagu (pokretac teme) puno lakše mogao razumjeti kod.

Divide et Impera! ( :
Poruka je uređivana zadnji put ned 13.2.2011 13:27 (BolestanUm).
17 godina
offline
Re: Pomoć za kolokvij
BolestanUm kaže...
Floki kaže...

 

noviNiz[i] = (niz1[i]<niz2[i]) ? (niz1[i]<niz3[i]) ? niz1[i] : niz3[i] :

(niz2[i]<niz3[i]) ? niz2[i] : niz3[i];

 

Ovo ne bi trebalo biti teško čitljivo

npr:

niz1: 5 4 3 2 1

niz2: 2 8 4 5 3

niz3: 4 1 8 7 5

 

 

prva iteracija:

(5<2) false - ide na (2<4) true - izabira 2

Ma razumijem ja tvoj kod (samo treba pozorno pratit '?' i ':') i ne želim utjecat na tvoj način pisanja. Svak ima svoj način itd. Ali naslov teme je pomoć za kolokvij. To znači da pokretač teme ima problema, i nije bas prikladno da mu ubacis grananje ? operatora. :D
Pomocu if-ova bi bilo vise linija, ali bi vrlo vjerojatno @kagu (pokretac teme) puno lakše mogao razumjeti kod.

čm netko dođe sa zadacima, a ne predstavi svoj kod koji je sam pokušao napisati, moš misliti što ga to zanima, bilo if-else, switch ili ? grananje, a u stvari ja najviše koristim if-else, zatim switch, a ? rijetko,  međutim ovdje mi

se učinilo zgodno, čak najjednostavnije

15 godina
neaktivan
offline
Pomoć za kolokvij
evo jos uvik se vuce predmet racunala i programiranje. ako moze pomoc o ko vog banalnog zadatka.

Napišite dekadski ekvivalent realnog broja predstavljenog formatom IEEE 741 (jedan bit predznak, 8 eksponent, pomak 127, 23 bita za mantisu).
Primjerice, neka je zadan broj 0 10000011 1110110.....0 (predznak, eksponent mantisa).

Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Pomoć za kolokvij

Evo 10. Javi ako to nije to.

Algo: Binarni broj zbrajas s 11111... onoliko koliko znamenaka ima broj s kojim zbrajas. visak znamenaka odbacujes.

 

#include <cstdio>

int main()
{
  int N; 
  scanf( "%d", &N );

  int sol = 0, carry = 0;
  for( int i = 0; (1<<i) <= N; ++i ) {
    int add = ((N & (1<<i)) > 0) + carry + 1;
    if( add & 1 ) sol |= (1<<i);
    carry = (add > 1) ? 1 : 0;
  }

  printf( "%d\n", sol );
}

Poruka je uređivana zadnji put pet 25.2.2011 21:03 (Budimir).
 
0 0 hvala 0
14 godina
neaktivan
offline
Pomoć za kolokvij

Evo 8.

 

#include <cstdio>#include <cstring>#include <cstdlib>
int sum;
char num[ 100 ];

inline bool isNumber( char *num ) {
for( int i = 0; i < strlen( num ); ++i )
if( num[i] < '0' || num[i] > '9' ) return false;
return true;
}

int main()
{
for( int i = 0; i < 100; ++i ) {
scanf( "%s", num );
if( isNumber( num ) ) sum += atoi( num );
}
printf( "%d\n", sum );
}

 
0 0 hvala 0
14 godina
neaktivan
offline
C++ - riješite mi zadatke za kolokvij

Ima li ovdje netko da zna raditi s threadovimau c++u? Ako ima, može li mi se javiti na privatnu poruku... Unaprijed zahvalna. Lijep pozdrav forumašima.

 
1 0 hvala 0
14 godina
neaktivan
offline
C++ - riješite mi zadatke za kolokvij

C++ nema native podršku za threadove. Koje razvojno okruženje (biblioteku) koristiš? Ili nije bitno?

Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
C++ - riješite mi zadatke za kolokvij

#include <pthread.h>

 
0 0 hvala 0
17 godina
neaktivan
offline
C++ - riješite mi zadatke za kolokvij

To je POSIX standard za threadove. Dakle *nix platforma. Iako postoji i implementacija na Win platformi. To je prije C nego C++. Ako misliš kaj raditi, trebaš imati dobro znanje o semaforima i monitorima (sinkronizacija). Bez toga nema puno posla.

 

EDIT: Tracer, dobrodošao nazad ;)

Some people say that if you play a Windows install CD backwards you will hear demon voices commanding you to worship Satan. But that's nothing. If you play it forward it will install Windows.
Poruka je uređivana zadnji put sub 30.4.2011 22:57 (1domagoj1).
 
1 0 hvala 1
14 godina
neaktivan
offline
Moj PC  
0 0 hvala 0
12 godina
neaktivan
offline
C++ - riješite mi zadatke za kolokvijum
napisati program koji iz primarne niti pokrece dve niti koje pristupaju nizu celih brojeva dimenzije 10 elemenata. Primarna nit obezbedjuje postavljanje vrednosti svih elemenata niza i to elementi sa parnim indeksima na vrednost 0, a na neparnim indeksima na vrednost 1. Nakon toga primarna nit kreira dve niti i pocinje da meri vreme izvrsavanja niti.

prva nit uvecava svaki parni elemenat niza za 3,a neparne elemente za 2,vreme cekanja u prvoj niti je 3.5sekundi

druga nit umanjuje svaki parni element niza za 1,a neparne elemente za 3,vreme cekanja 5.5sekundi

prograam suspenduje prvu nit nakon 20sekundi,a drugu nakon 30sekundi

tada se pravi pauza od 5 sekundi i samo suspendovana nit nastavlja sa radom

nakon tacno 3 ponovnog ponavljanja pokretanja bilo koje niti program zaustavlja rad obe niti i prikazuje vrednosti niza

treba mi resenje hitnooo! Molim vas....hvala
 
1 2 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice