Zna neko gdje imaju neki zadaci,objašnjenja za pripreme za takmičenje?
Programiranje u C++-u - pitanja i odgovori
- poruka: 7.285
- |
- čitano: 1.712.555
- |
- moderatori:
Lazarus Long, XXX-Man, vincimus
- +/- sve poruke
- ravni prikaz
- starije poruke gore
Zna neko gdje imaju neki zadaci,objašnjenja za pripreme za takmičenje?
Napišite program u jeziku C za mikrokrmilnik MSP430F2013, koji ce na osnovu analognog ulaza paliti ili gasiti LED lampice. Na analogni ulaz je spojen Potenciometar s kojim cemo mijenjati napon....
Stanje LED bilo bi:
-ako je procitana vrijednosta manja od 8000, aonda su sve LED ugasene,
-ako je procitana vrijednost između 8000 i 16000, svetli samo LED 1,
-ako je procitana vrijednost između 16000 i 24000, svetli LED 1 i LED 2 ,
-ako je procitana vrijednost veca od 24000, svetli LED 1, LED 2 i LED 3,
ovo je slika tog mikroprocesora (mikromilnika) dole
Cao momci znaci imam problem s microsoft visual 2010 ...znaci kada kompajlam i sve mi dobro bude (Done) idem pokrenut program i otvori mi se onaj crni prozorcic i odma mi se ugasi....
evo sta sam pokusavao otvorit #include <stdio.h>
#include <stdlib.h>
int main()
{
int n,m,i;
printf("upisite pocetni broj: ");
scanf("%d",&n);
printf("upisite krajnji broj: ");
scanf("%d",&m);
if (n<m)
{
if (n%2)
for (i=n;i<=m;i+=2)
printf("%d\n",i);
else
for (i=n+1;i<=m;i+=2)
printf("%d\n",i);
}
else
printf ("pocetni broj je veci od krajnjeg.");
system("pause");
return 0;
}
Cao momci znaci imam problem s microsoft visual 2010 ...znaci kada kompajlam i sve mi dobro bude (Done) idem pokrenut program i otvori mi se onaj crni prozorcic i odma mi se ugasi....
evo sta sam pokusavao otvorit #include <stdio.h>
#include <stdlib.h>
int main()
{
int n,m,i;
printf("upisite pocetni broj: ");
scanf("%d",&n);
printf("upisite krajnji broj: ");
scanf("%d",&m);
if (n<m)
{
if (n%2)
for (i=n;i<=m;i+=2)
printf("%d\n",i);
else
for (i=n+1;i<=m;i+=2)
printf("%d\n",i);
}
else
printf ("pocetni broj je veci od krajnjeg.");
system("pause");
return 0;
}
Šta želiš ti da uradiš u programu uopšte?
Jel mi može neko da ti ideju kako riješiti ovaj zadatak ? Ne tražim kod nego samo da mi neko malo pojasni . Da li se tu koristi dinamičko programiranje ?
Evo zadatak :
Zadana je jedna pruga duljine L metara. Na toj pruzi postoji S željezničkih postaja (postavljenih na cjelobrojne točke na pruzi) koje prugu dijele na S-1 segmenata. Dvije postaje od njih S se nalaze na krajevima pruge i to početna postaja u točki X=0 i završna u točki X=L.
Na pruzi se u početnom trenutku promatranja nalazi V vlakova. Vlakovi su nalaze na otvorenoj pruzi (tj. nisu u stanici), u svakom segmentu se nalazi maksimalno jedan vlak i svi ti vlakovi se kreću prema zadnjoj stanici na poziciji X=L. Vlakovi se po pruzi stalno kreću (osim kada stoje u stanici), a brzina svakog vlaka je konstantna i iznosi jedan metar u sekundi.
Glavni prometnik na toj pruzi iz kontrolne sobe ima potpuni nadzor i kontrolu nad njom. Zbog sigurnosti, unutar jednog segmenta (koji ne obuhvaća stanice) se smije nalaziti samo jedan vlak dok je u stanicama njihov broj neograničen. To znači da prometnik ne smije pustiti vlak iz stanice u naredni segment sve dok taj segment nije slobodan. Kada može, prometnik vlakove iz postaje pušta dalje onim redoslijedom kako su u postaju i ulazili.
Napiši program koji će za zadanu početnu situaciju na pruzi za svaki vlak ispisati vrijeme potrebno da taj vlak od trenutne pozicije dođe do zadnje stanice!
Ulaz
prirodan broj L ( 1 ≤ L ≤ 10000000 ), duljina pruge u metrima;
prirodan broj S ( 2 ≤ S ≤ 2000 ), broj postaja na promatranoj pruzi;
prirodan broj V ( 1 ≤ V ≤ 2000 ), broj vlakova na promatranoj pruzi;
strogo rastući niz od S nenegativnih cijelih brojeva Si ( 0 ≤ Si ≤ L, i=1..S, S1=0 i Ss=L ), gdje je Si pozicija i-te postaje na pruzi;
strogo rastući niz od V prirodnih brojeva Vi ( 1 ≤ Vi ≤ L-1, i=1..V, pri čemu vrijedi da Vi≠Sj za svaki i=1..V i j=1..S), gdje je Vi pozicija vlaka s oznakom „i“ na pruzi;
Izlaz
u V redaka izlaza treba ispisati po jedan prirodan broj, vrijeme u sekundama potrebno da vlak s oznakom “i” (i=1..V) dođe do završne stanice.
Napomena: U 50% test primjera vrijedit će da je L ≤ 2000 te S ≤ 100 i V ≤ 100.
Napišite program u jeziku C za mikrokrmilnik MSP430F2013, koji ce na osnovu analognog ulaza paliti ili gasiti LED lampice. Na analogni ulaz je spojen Potenciometar s kojim cemo mijenjati napon....
Stanje LED bilo bi:
-ako je procitana vrijednosta manja od 8000, aonda su sve LED ugasene,
-ako je procitana vrijednost između 8000 i 16000, svetli samo LED 1,
-ako je procitana vrijednost između 16000 i 24000, svetli LED 1 i LED 2 ,
-ako je procitana vrijednost veca od 24000, svetli LED 1, LED 2 i LED 3,
ovo je slika tog mikroprocesora (mikromilnika) dole
Cekaj, na osnovu te slike, ja bih magicno tebi trebao znati isprogramirati taj mikroprocesor?
Pozdrav kolege,
znam da ne volite ovakve tipove pitanja tj ljude koji banu i traze rjesenja, no ja trazim malu pomoc za sljedece
ovako bi trebao izgledat program
Treba ispisati brojeve iz raspona od M do N djeljive s brojem B. Obavezno koristiti WHILE petlju.
imam nesto ovako
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int N=0;
int M=0;
int brojac=0;
int brojilo=0;
cout<<"Upisi pocetni broj:"<<endl;
cin>>M;
cout<<"Upisi zavrsni broj:"<<endl;
cin>>N;
while(M<=N)
{
brojac=brojac+1;
brojilo=M-N;
cout<<"Od broja"<<M<<"Do broja"<<N<<"je "<<brojilo<<"broja"<<endl;
cout<<endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}
hvala
Napišite program u jeziku C za mikrokrmilnik MSP430F2013, koji ce na osnovu analognog ulaza paliti ili gasiti LED lampice. Na analogni ulaz je spojen Potenciometar s kojim cemo mijenjati napon....
Stanje LED bilo bi:
-ako je procitana vrijednosta manja od 8000, aonda su sve LED ugasene,
-ako je procitana vrijednost između 8000 i 16000, svetli samo LED 1,
-ako je procitana vrijednost između 16000 i 24000, svetli LED 1 i LED 2 ,
-ako je procitana vrijednost veca od 24000, svetli LED 1, LED 2 i LED 3,
ovo je slika tog mikroprocesora (mikromilnika) dole
Cekaj, na osnovu te slike, ja bih magicno tebi trebao znati isprogramirati taj mikroprocesor?
pa da trebam isprogramirati ,,, treba mi nekih uvoda i sl.. da pocnem
Pozdrav kolege,
znam da ne volite ovakve tipove pitanja tj ljude koji banu i traze rjesenja, no ja trazim malu pomoc za sljedece
ovako bi trebao izgledat program
Treba ispisati brojeve iz raspona od M do N djeljive s brojem B. Obavezno koristiti WHILE petlju.
hvala
Aha, tebe muci koliko vidim, kako provjeriti da li je neki broj djeljiv s nekim drugim brojem?
Pogledaj si operator modulo (%) i sto on tocno radi, ako ne skontas reci pa cemo ti objasniti.
Pozdrav kolege,
znam da ne volite ovakve tipove pitanja tj ljude koji banu i traze rjesenja, no ja trazim malu pomoc za sljedece
ovako bi trebao izgledat program
Treba ispisati brojeve iz raspona od M do N djeljive s brojem B. Obavezno koristiti WHILE petlju.
imam nesto ovako
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int N=0;
int M=0;
int brojac=0;
int brojilo=0;
cout<<"Upisi pocetni broj:"<<endl;
cin>>M;
cout<<"Upisi zavrsni broj:"<<endl;
cin>>N;
while(M<=N)
{
brojac=brojac+1;
brojilo=M-N;
cout<<"Od broja"<<M<<"Do broja"<<N<<"je "<<brojilo<<"broja"<<endl;
cout<<endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}
hvala
vidi paše li ti ova verzija ::
#include <iostream>
#include <stack>
using namespace std;
int main()
{
stack<int> numbers;
int start_num;
int start_numToCout;
int max_num;
int counter = 0;
cout<<"Upisi pocetni broj:"<<endl;
cin>>start_num;
start_numToCout = start_num;
/* nulu eliminiraj zbog kondicije
dolje navedene start_num%8 == 0*/
if(start_num == 0)
{
start_num++;
}
cout<<"Upisi zavrsni broj:"<<endl;
cin>>max_num;
while(start_num <= max_num)
{
if(start_num%8 == 0)
{
numbers.push( start_num );
counter++;
}
start_num++;
}
cout<<"Od broja : "<< start_numToCout <<" do broja : "<< max_num <<" je "
<< counter <<" bro(ja/jeva) djelj(iva/ivih) s 8"<<endl << endl
<< "Brojevi su sljedeci : " << endl;
while( !numbers.empty() )
{
cout<< numbers.top() << endl;
numbers.pop();
}
return 0;
}
pa da trebam isprogramirati ,,, treba mi nekih uvoda i sl.. da pocnem
Gle, ne mogu ti ja nista magicno isprogramirati, ako ne vidim shemu te plocice (tj. tog sustava) i specifikaciju tog mikroprocesora - koliku ima memoriju, koje vrste memorija, koji su mu registri posebne namjene i cemu pojedini sluzi, koje pinove, kako su ti pinovi upotrebljeni i gdje na ovoj plocici, kakve su ovo sklopke S1 i S2, te cemu sluze, detalje daj jer bez toga ne ide. Kad sam ja programirao 80C31 na labosu, dobili smo pripremu od kojih 50-ak stranica s tri blokovske sheme i sedam elektricnih shema tog racunalnog sustava koje je trebalo prouciti i skuziti da bi se znalo isprogramirati ono sto se trazi.
Ovako napamet ti mogu reci jedino da ovisno kako je ovaj potenciometar spojen na mikroprocesor (najvjerojatnije preko posebnih pinova za komunikaciju s vanjskim svijetom) ucitas podatke o iznosu napona i na temelju tih podataka posaljes signal na pinove na kojima su spojene ledice. Imat ces 4 if-else uvjeta i to je to.
void prva(){
if(broj_elemenata==0){
cout<<"Polje nije alocirano\nUnesite broj elemenata polja(>0)\n";
cin>>broj_elemenata;
ctrokut *polje;
polje = new ctrokut[broj_elemenata];
}//alociramo
cout<<"Polje je alocirano \n";
cout<<"Velicina polja : " << broj_elemenata << endl;
if(trenutni_element==0) cout<<" Nije unesen niti jedan jedan element polja\n";
if(trenutni_element==0) return;
cout<<"Nazivi unesenih trokuta \n";
for(int i=0;i<=broj_elemenata;i++) polje[i]->naziv;
Javlja mi error da polje u zadnjoj liniji polje nije definirano? Definirao sam dinamicki polje ctrokuta Nije mi jasno zasto,baca error, moze me tko prosvijetliti?
To polje je deklarirano u if scope-u. Deklariraj ga izvan naredbe if tj. kao lokalnu varijablu funkcije.
Zadatak traži da provjerimo da li je polje alocirano već, ukoliko nije onda trebamo ga alocirati,a ako je onda samo ispisemo naziv trokuta ,a kad bi ga deklarirao kao lokalnu varijablu funkcije onda bi se svaki puta kad bih je pozvao alociralo novo polje ako ne grijesim?
Javlja mi error da polje u zadnjoj liniji polje nije definirano? Definirao sam dinamicki polje ctrokuta Nije mi jasno zasto,baca error, moze me tko prosvijetliti?
Prouci malo scope u C++-u. Ponesto je drugaciji nego u C-u. Local scope u C++-u malo prosiruje koncept block scopea tako da moze adresirati novije mogucnosti koje C++ pruza, a to je recimo definiranje varijabli u for petlji, if statementu i sl.
Zadatak traži da provjerimo da li je polje alocirano već, ukoliko nije onda trebamo ga alocirati,a ako je onda samo ispisemo naziv trokuta ,a kad bi ga deklarirao kao lokalnu varijablu funkcije onda bi se svaki puta kad bih je pozvao alociralo novo polje ako ne grijesim?
Ako ga deklariras, onda ne, ako ga definiras, onda da. Samo ga deklariraj, izbaci ovo ctrokut *polje izvan if statementa, a kasnije ga u if statementu inicijaliziraj.
Zadatak traži da provjerimo da li je polje alocirano već, ukoliko nije onda trebamo ga alocirati,a ako je onda samo ispisemo naziv trokuta ,a kad bi ga deklarirao kao lokalnu varijablu funkcije onda bi se svaki puta kad bih je pozvao alociralo novo polje ako ne grijesim?
pa jel ti čovjek rekao DEKLARIRAJ polje izvan if scopea.
Hvala, sad radi,znaci sad ctrokut *polje smo deklarirali polje a sa polje = new ctrokut[broj_elemenata]; smo ga definirali ?
Hvala, sad radi,znaci sad ctrokut *polje smo deklarirali polje a sa polje = new ctrokut[broj_elemenata]; smo ga definirali ?
- deklaracija int a (najava)
- inicijalizacija a=5 (dodjela vrijednosti)
- skupa int a = 5
Zadatak traži da provjerimo da li je polje alocirano već, ukoliko nije onda trebamo ga alocirati,a ako je onda samo ispisemo naziv trokuta ,a kad bi ga deklarirao kao lokalnu varijablu funkcije onda bi se svaki puta kad bih je pozvao alociralo novo polje ako ne grijesim?
Jasno. Zato bi trebao i dealocirati zauzetu memoriju. Ili jednostavno koristi vektore.
Hvala, sad radi,znaci sad ctrokut *polje smo deklarirali polje a sa polje = new ctrokut[broj_elemenata]; smo ga definirali ?
int a; // deklaracija varijable
int b = 0; // definicija varijable
Isto je i s funkcijama
int funkcija(); // deklaracija funkcije
int funkcija()
{
// neki kod
} // definicija funkcije
Konkretno u tvom slucaju, ti si deklarirao pointer (ili pokazivac, kako ti je draze) polje (to mu je ime) koji trenutno ne pokazuje nigdje. Takozvani dangling pointer. Kasnije sa new operatorom alociras odredeni chunk memorije i onda tom svom visecem pointeru pridruzis adresu na prvi element tog novoalociranog polja, tj. dodjelio si mu neku vrijednost (adresu na prvi element arraya).
Obavijest onima koji koriste Code::Blocks, nakon gotovo 2 i pol godine nova verzija je vani sa hrpom izmjena i popravaka. Skraćeni changelog sa samo bitnijim promjenama možete pronaći ovdje.
http://www.codeblocks.org/downloads/26
Oni malo neiskusniji, pazite da skinete installer s kompajlerom: "codeblocks-12.11mingw-setup.exe", jer ona druga verzija installera ne dolazi s kompajlerom. Pa da se ne bi čudili zašto vam se ništa ne kompajlira :D
Implementirati funkciju sa prototipom:
int iste_cifre(int a, int b)
Funkcija prima dva pozitivna cijela broja a i b, a vraća broj sastavljen od onih cifara iz
broja a koje se nalaze i u broju b. Cifre u novom broju trebaju biti istim redoslijedom
kao u broju a, pri čemu početne nule naravno trebaju biti zanemarene. Ako se cifre
broja a ponavljaju, trebaju se ponavljati i u rezultatu. Ako se nijedna cifra iz broja a ne
nalazi u broju b, funkcija treba vratiti nulu.
Pored ove funkcije, potrebno je napraviti i glavni program (main funkciju) koji
omogućuje testiranje funkcije tako što se unesu dva broja i ispiše rezultat.
Primjeri:
a=328 b=8503 rezultat=38
a=12234 b=2 rezultat=22
a=8052 b=20 rezultat=2 (početna nula je zanemarena)
a=123 b=456 rezultat=0
Implementirati funkciju sa prototipom:
int iste_cifre(int a, int b)
Funkcija prima dva pozitivna cijela broja a i b, a vraća broj sastavljen od onih cifara iz
broja a koje se nalaze i u broju b. Cifre u novom broju trebaju biti istim redoslijedom
kao u broju a, pri čemu početne nule naravno trebaju biti zanemarene. Ako se cifre
broja a ponavljaju, trebaju se ponavljati i u rezultatu. Ako se nijedna cifra iz broja a ne
nalazi u broju b, funkcija treba vratiti nulu.
Pored ove funkcije, potrebno je napraviti i glavni program (main funkciju) koji
omogućuje testiranje funkcije tako što se unesu dva broja i ispiše rezultat.
Primjeri:
a=328 b=8503 rezultat=38
a=12234 b=2 rezultat=22
a=8052 b=20 rezultat=2 (početna nula je zanemarena)
a=123 b=456 rezultat=0
Evaj glupasti editor je postao nepodnosljiv i evo ti link na kod na pastebinu:
#include <iostream>
using namespace std;
int iste_cifre(int a, int b){
int znamenkeA[15], znamenkeB[15];
int brojZnamenkiA=0, brojZnamenkiB=0;
while(a>0){
znamenkeA[brojZnamenkiA] = a % 10;
a /= 10;
brojZnamenkiA++;
}
while(b > 0){
znamenkeB[brojZnamenkiB] = b % 10;
b /= 10;
brojZnamenkiB++;
}
int pocetak = 0;
while(znamenkeA[pocetak] == 0)
pocetak++;
int rezultat = 0;
int potencija = 1;
for(int i = pocetak; i < brojZnamenkiA; i++){
bool postoji = false;
for(int j = 0; j < brojZnamenkiB; j++)
if(znamenkeA[i] == znamenkeB[j]){
postoji = true;
break;
}
if(postoji == true){
rezultat += znamenkeA[i] * potencija;
potencija *= 10;
}
}
return rezultat;
}
int main(){
int a[] = {328, 12234, 8052, 123};
int b[] = {8503, 2, 20, 456};
for(int i = 0; i < 4; i++)
cout << "a=" << a[i] << " b=" << b[i] << " Rezultat=" << iste_cifre(a[i],b[i]) << endl;
return 0;
}
nije ono sto je meni potrebno, ono sta mi treba jeste da kosirnik unesi neka dva broja a zatim da ispise zajednicke cifre koje sadrze ta dva broja, u primjeru je navedeno samo kako treba da to izgleda pri ispisu rezultata
Implementirati funkciju sa prototipom:
int iste_cifre(int a, int b)
Funkcija prima dva pozitivna cijela broja a i b, a vraća broj sastavljen od onih cifara iz
broja a koje se nalaze i u broju b. Cifre u novom broju trebaju biti istim redoslijedom
kao u broju a, pri čemu početne nule naravno trebaju biti zanemarene. Ako se cifre
broja a ponavljaju, trebaju se ponavljati i u rezultatu. Ako se nijedna cifra iz broja a ne
nalazi u broju b, funkcija treba vratiti nulu.
Pored ove funkcije, potrebno je napraviti i glavni program (main funkciju) koji
omogućuje testiranje funkcije tako što se unesu dva broja i ispiše rezultat.
Primjeri:
a=328 b=8503 rezultat=38
a=12234 b=2 rezultat=22
a=8052 b=20 rezultat=2 (početna nula je zanemarena)
a=123 b=456 rezultat=0
Evaj glupasti editor je postao nepodnosljiv i evo ti link na kod na pastebinu:
#include <iostream>
using namespace std;
int iste_cifre(int a, int b){
int znamenkeA[15], znamenkeB[15];
int brojZnamenkiA=0, brojZnamenkiB=0;
while(a>0){
znamenkeA[brojZnamenkiA] = a % 10;
a /= 10;
brojZnamenkiA++;
}
while(b > 0){
znamenkeB[brojZnamenkiB] = b % 10;
b /= 10;
brojZnamenkiB++;
}
int pocetak = 0;
while(znamenkeA[pocetak] == 0)
pocetak++;
int rezultat = 0;
int potencija = 1;
for(int i = pocetak; i < brojZnamenkiA; i++){
bool postoji = false;
for(int j = 0; j < brojZnamenkiB; j++)
if(znamenkeA[i] == znamenkeB[j]){
postoji = true;
break;
}
if(postoji == true){
rezultat += znamenkeA[i] * potencija;
potencija *= 10;
}
}
return rezultat;
}
int main(){
int a[] = {328, 12234, 8052, 123};
int b[] = {8503, 2, 20, 456};
for(int i = 0; i < 4; i++)
cout << "a=" << a[i] << " b=" << b[i] << " Rezultat=" << iste_cifre(a[i],b[i]) << endl;
return 0;
}
nije ono sto je meni potrebno, ono sta mi treba jeste da kosirnik unesi neka dva broja a zatim da ispise zajednicke cifre koje sadrze ta dva broja, u primjeru je navedeno samo kako treba da to izgleda pri ispisu rezultata
Zašto pobogu uopće rješavate zadatke ovakvim gotovanima koji neće sami niti da pokušaju išta rješavati?? Umjesto toga tu još i kritizira tuđi rad i trud umjesto da ovo rješenje prilagodi svom zadatku.
Obavijest onima koji koriste Code::Blocks, nakon gotovo 2 i pol godine nova verzija je vani sa hrpom izmjena i popravaka. Skraćeni changelog sa samo bitnijim promjenama možete pronaći ovdje.
http://www.codeblocks.org/downloads/26
Oni malo neiskusniji, pazite da skinete installer s kompajlerom: "codeblocks-12.11mingw-setup.exe", jer ona druga verzija installera ne dolazi s kompajlerom. Pa da se ne bi čudili zašto vam se ništa ne kompajlira :D
Zašto u novom Code::Blocksu ne mogu otvoriti ove zagrade poslije for petlje {} nego mi napiše komentar.