PDA

Prikaži potpunu verziju : C++ i Pascal


ETR1
6.5.2014, 13:57
Imam par problemcica pa da vas pitam. U jednoj zbirci imam zadatke napisane u Pascalu, u skoli nisam ucila Pascal nego C i C++ pa sam htela te zadatke iz zbirke da napisem u C++. Programe koje imam za to su Dev C++ i Dev Pascal. Problem je u tome sto na izlazu ne dobijem dobar rezultat.
Evo primera:
"Napisati program koji ucitava prirodan broj N, a zatim izracunava i stampa drugu cifru C, sa leve strane broja N, koja je veca od 3. Ukoliko broj N nema dve cifre koje su vece od 3 odstampati odgovarajucu poruku. Primer: N=7326, tada je C=6."
Resenje koje su oni dali je
program zad6;
var
N,C,D:integer;
begin
readln(N);
C:=-1;
D:=-1;
while N>0 do begin
if N mod 10>3 then begin
C:=D;
D:=N mod 10
end;
N:=N div 10
end;
if C=-1 then
writeln('ne postoji')
else
writeln(C)
end.

E ja sam to pokusala da prevedem ovako
#include<iostream>
using namespace std;
int main()
{
int N,C,D;
cout<<"N= ";
cin>>N;
C==-1;
D==-1;
while(N>0)
{
if(N%10>3)
{
C==D;
D==N%10;
}
N=N/10;
}
if(C==-1)
{
cout<<"Ne postoji"<<endl;
}
else
{
cout<<endl<<"Rezultat je "<<C<<endl;
}
system("pause");
}

I na kraju mi rezultat bude nesto 2293728, a za N unesem 7326.
Drugi problem je kada ja unesem taj zadatak u Dev Pascal bas tako kako je u zbirci napisano nista ne ispisuje na ekranu. Pomozite ako znate :)

voodoo_
6.5.2014, 14:07
Greška je što mešaš dodelu i proveru jednakosti.

U paskalu:

= znači "da li je jednako"
:= znači "dodeli"

U C/C++:

== znači "da li je jednako"
= znači "dodeli"


Dakle u C++ primeru ne treba

C==D;
D==N%10;

nego

C=D;
D=N%10;

I ajde prekucaj te zadatke ali ih uokviri u CODE tagove i sa uvlačenjima, ovako se ništa ne vidi...

ETR1
6.5.2014, 14:23
U pravu si, sad pise da je rezultat 6. Ima jos zadataka koji nisu radili samo da ih nadjem i probam opet. Nije mi jasno zasto se u Pascalu nista ne desava, mozda u zbirci nije potpun zadatak. Sad to izgleda ovako
#include<iostream>
using namespace std;
int main()
{
int N,C,D;
cout<<"N= ";
cin>>N;
C==-1;
D==-1;
while(N>0)
{
if(N%10>3)
{
C=D;
D=N%10;
}
N=N/10;
}
if(C==-1)
{
cout<<"Ne postoji"<<endl;
}
else
{
cout<<endl<<"Rezultat je "<<C<<endl;
}
system("pause");
}

Nisam dugo radila u dev C++ sad nesto vidim nece da mi kompajlira u C neke banalne primere saberi dva broja i tako to, izbaci citavu pricu oko greske.

voodoo_
6.5.2014, 14:25
Promeni i


C==-1;
D==-1;

u

C=-1;
D=-1;

Inače originalni Dev-C++ se odavno ne razvija, probaj u novoj verziji: http://orwelldevcpp.blogspot.com/

Što se tiče Paskala, probaj te primere u Free Pascalu:

http://www.freepascal.org/down/i386/win32.var

Jeste da izgleda kao DOS program, ali je u stvari moderan pascal kompajler koji se i dalje razvija.

ETR1
6.5.2014, 15:23
Probala sam da napisem taj isti zadatak u freepascal i malo mi nije pregledna situacija. Pise Running "c:\fpc\2.6.4\bin\i386-win32\broj n.exe" i ispod prazno i ja ukucam 7326 enter, a ono mi ugasi program. Tek kad opet kliknem run onda vidim da ispod 7326 pise 6.

program zad6;
var
N,C,D:integer;
begin
readln(N);
C:=-1;
D:=-1;
while N>0 do begin
if N mod 10>3 then begin
C:=D;
D:=N mod 10
end;
N:=N div 10
end;
if C=-1 then
writeln('ne postoji')
else
writeln(C)
end.

Znaci jos samo treba da utvrdim c++ i to je donekle to. :)

voodoo_
6.5.2014, 15:35
1. Pre 'readln(N)' stavi write('Unesite N: ');

2. Na kraju programa, pre poslednjeg 'end' stavi readln;

ETR1
5.7.2014, 17:42
Zadatak: Napisati program koji rešava sledeći problem. Treba učitati dvocifreni broj. Zatim treba učitati niz jednocifrenih brojeva čija dimenzija je prethodno učitani broj. Izračunati i odštampati koliko elemenata niza zadovoljava uslov da im je proizvod cifara manji od 15. Treba vršiti kontrolu unosa i omogućiti višestruko izvršavanje programa na zahtev korisnika.

Ako neko zna da ga uradi neka slobodno napiše kod ovde. Može i u c i u c++ :) Uglavnom mi je problem ovaj drugi deo zadatka sa proizvodom cifara, da li treba preko funkcije ili ne i ovo višestruko izvršavanje.

dsl94
5.7.2014, 23:52
Zadatak: Napisati program koji rešava sledeći problem. Treba učitati dvocifreni broj. Zatim treba učitati niz jednocifrenih brojeva čija dimenzija je prethodno učitani broj. Izračunati i odštampati koliko elemenata niza zadovoljava uslov da im je proizvod cifara manji od 15.

Ako treba da se ucita niz jednocifrenih brojeva kako onda da se pronadju oni ciji je proizvod cifara manji od 15? Po tekstu brojevi u nizu imaju samo jednu cifru

ETR1
6.7.2014, 13:35
E to se i ja pitam, vidim da nešto ne štima u zadatku, a ne znam kako da raščlanim cifre, valjda bi išlo npr c1=a[i]/10 i c2=a[i]%10.

dsl94
6.7.2014, 14:45
Kad radis:
n%10 dobijas poslednju cifru broja n a kad radis n/10 brise sposlednju cifru,
Za dvocifrene brojeve bi islo ovako:
cj=n%10;
cd=n/10;

A ako ima broj od n cifara onda radis preko while petlje

int prizvod=1;
while(n>0){
c=n%10;
proizvod*=c;
n=n/10;
}