PASCAL - Zadaci, resenja, problemi, izazovi...

Imam problem u vezi jednog zadatka. Njegov tekst sam vec napisao, u vezi one pljačke. Evo kako ga ja rešavam:
Kod:
program pljacka;
 type niz= array [1..2,1..2] of integer;
	  dat= file of niz;
 var t:niz;
	 f,g:dat;
	 x,i,j:integer;
	 na,nb,a,b,mpa,mpb:real;
	 Ok: boolean;
begin
	 assign(f,'zad2.dat'); reset(f);
	 assign(g,'zad2.res'); rewrite(g);
	 for i:=1 to 2 do
		 for j:=1 to 2 do
			 begin
			 [b][color=Red]read(f,x);[/color][/b]
			 t[i,j]:=x;
			 end;
		 end;
	 a:=t[1,2]; b:=t[2,2]; na:=t[1,1]; nb:=t[2,1];
	 mpa:=na*a;
	 mpb:=nb*b;
	 Ok:= mpa=mpb;
	 while not Ok do
		   begin
		   mpa:=(na-1)*a;
		   mpb:=(nb-1)*b;
		   if (na=0) or (nb=0) then 
			 begin
			   writeln(g,'Nemoguce je podeliti novac.');
			 break;
			 end;
		   end;
	 if ok then writeln(g,na:2:0,nb:6:0);
	 close(f);
	 close(g);
end.
Ovo što je označeno meni pravi problem. Uvek mi prijavljuje istu grešku "TYPE MISMATCH". A ako za promenljive f i g stavim tip text, onda kad pokrenem program, on se ukoči. Znam i zašto, jer ne može on da iz datoteke izvlači tekstualne karaktere i da ih stavlja u niz koji je integer.
Jel zna neko zašto mi se ovo dešava?
 
cvele2:
A evo vam i još jedan zadatak da malo žuljite mozak u međuvremenu.
Zadatak glasi ovako:
Napisati program koji će za unetu godinu i mesec ispisati adekvatni kalendar.

* Kratak ali jebitačan! :twisted:
I šta je tu sada problem? Izračunaš koji je dan u nedelji prvi dan datog meseca i godine i ispišeš kalendar.

Kako se izračunava dan na osnovu datuma, ostavljam tebi kao domaći. Nema smilsa da ti preskočiš žuljanje mozga.
 
cvele2:
Ovo što je označeno meni pravi problem. Uvek mi prijavljuje istu grešku "TYPE MISMATCH". A ako za promenljive f i g stavim tip text, onda kad pokrenem program, on se ukoči. Znam i zašto, jer ne može on da iz datoteke izvlači tekstualne karaktere i da ih stavlja u niz koji je integer.
Jel zna neko zašto mi se ovo dešava?

Fajl ti tipa dat koji se kreirao, a ti pokusavas ucitati u varijablu integera.
 
cvele2:
...
Ovo što je označeno meni pravi problem. Uvek mi prijavljuje istu grešku "TYPE MISMATCH". A ako za promenljive f i g stavim tip text, onda kad pokrenem program, on se ukoči. Znam i zašto, jer ne može on da iz datoteke izvlači tekstualne karaktere i da ih stavlja u niz koji je integer.
Jel zna neko zašto mi se ovo dešava?
Normalno da ti prijavljuje grešku. I lepo ti kaže u čemu je problem, ali izgleda da nemaš vremena da "žuljiš mozak".

Hint: Pogledaj kog su tipa podaci u datoteci i kog je tipa promenljiva u koju pokušavaš da učitaš podatke iz te datoteke.
 
Mislim hvala puno na iscrpnoj pomoći od svih vas ovde! Na kraju sam ga sam rešio! ALI OPET IMAM PROBLEM!!!!
Prepravio sam program da sada ja unosim podatke u ulaznu datoteku. Onda odatle čitam potrebne stvari, preračunam i ispišem rezultate u izlaznu datoteku. E sad, program sve savršeno radi, ali podaci u ulaznoj i izlaznoj datoteci su mi nečitljivi! Umesto cifara prikazuje mi neke kvadratiće. Šta da mu radim?
 
Ah, pa naravno. Evo i konacnog resenja:
Kod:
program pljacka;
 type niz= array [1..2,1..2] of integer;
 var t:niz;
	 f,g:file of integer;
	 x,i,j:integer;
	 na,nb,a,b,mpa,mpb:integer;
	 Ok: boolean;
	 M,S:integer;
begin
	 assign(f,'zad2.dat'); rewrite(f);
	 assign(g,'zad2.txt'); rewrite(g);
	 writeln('Unesi kolicinu ukradenog novca i tip ukradenog novca za Mirka i Slavka:');
	 for i:=1 to 2 do
		 for j:=1 to 2 do
			 begin
			 read(t[i,j]);
			 x:=t[i,j];
			 write(f,x);
			 end;
	 reset(f);
	 read(f,na); read(f,a);
	 read(f,nb); read(f,b);
	 ok:=m=s;
	 for mpa:=1 to na do
		 begin
		 for mpb:=1 to nb do
			 begin
			 m:=mpa*a+mpb*b;
			 s:=na*a+nb*b-m;
			 ok:=m=s;
			 if ok then begin
						write(g,mpa);
						write(g,mpb);
						write(mpa:2,mpb:3);
						break;
						end;
			 end;
		 if ok then break;
		 end;
	 if not ok then begin
					writeln('Nemoguce je podeliti novac.');
					readln;
					end;
	 close(f);
	 close(g);
	 readln;
end.
Doduse podaci u ulaznoj i izlaznoj datoteci su idalje necitljivi, al program radi i to mi je jedino bitno!

Ajde dajte vi malo neki program. Vezbam za takmicenje.
 
Umalo da zaboravim na ovu temu koju sam ja postavio (malo se hvalim :p ). Salim se, naravno. Evo nekih zadataka sa takmicenja do kojih sam dosao. Pokusajte da ih resite, pa napisite kod.Dakle:

Задатак: Шифра
Мали Ђурица је за рођендан добио поклон спакован у сефу. У свој гужви на журци коју је Ђурица организовао, папир на коме је била записана шифра се негде затурио. Драганчету, Ђурицином другару, који му је поклонио поклон у сефу, је шифра позната, међутим он не жели да каже шифру Ђурици. Нервозни Ђурица је почео насумично да притиска дугмиће на тастатури (која служи за унос шифре). Драганче је пажљиво пратио шта Ђурица притиска, и након што је Ђурица прекинуо са нервозним куцањем по тастатури, Драганче је хтео да му каже колико је пута Ђурица откуцао шифру (у току насумичног притискања по тастатури). Помозите Драганчету да тачно изброји колико пута је Ђурица откуцао шифру.
Улаз: У улазној датотеци ZAD2.DAT у првом реду налази се цео број А (1≤А≤100), који представ-ља дужину шифре, након тога у другом реду налази се А знакова, који представљају шифру. Шифра је састављена од малих слова енглеског алфабета. Након тога, у трећем реду налази се цео број В (А≤В≤10000), то је број знакова које је Ђурица откуцао. У четвртом реду налази се В знакова који представљају текст. Овај текст се такође састоји само од малих слова енглеског алфабета.
Излаз: У првом реду излазне датотеке ZAD2.RES исписати цео број, који представља колико је пута Ђурица откуцао тачну шифру.
Напомена: Драганче броји и шифре које је Ђурица откуцао, а које се преклапају. Погледати Пример 2.
Пример 1:

ZAD2.DAT
2
ab
8
abbaabab

ZAD2.RES
3

Пример 2:

ZAD2.DAT
3
aca
5
acaca

ZAD2.RES
2

**********************************************************************************************


Задатак: Коцкице
Мали Ђокица је добио коцкице за рођендан. Узео је таблу димензија n пута m и на свако поље је поставио неколико коцкица (једну на другу). Тиме је направио фигуру која не мора да буде повезана. Његов тата посматра како се мали Ђокица игра и жели да зна запремину и површину добијеног тела.
Улаз: У првом реду улазне датотеке ZAD3.DAT налазе се два природна броја раздвојена празнином n и m (1 ≤ n, m ≤ 500) и представљају димензије табле. У сваком од следећих n редова се налази m бројева. У i-том реду j-ти број a [j] (0 ≤ a [j] ≤ 1000) означава висину стуба (број коцкица) на том пољу.
Излаз: У излазну датотеку ZAD3.RES исписати запремину и површину тела које је мали Ђокица направио.
Пример:

ZAD3.DAT
2 3
2 2 2
1 0 3

ZAD3.RES
10 36

Објашњење: Фигура на слици десно одговара распореду коцкица у тест примеру. Запремина тела је 10, док је површина 36.


***************************************************************************************************
Nadam se da nisu previse teski, pozdrav!
 
bojan p:
Zašto podaci i dalje nisu čitljivi? Zar je toliki problem napisati umesto
Kod:
f,g:file of integer;
ovo
Kod:
f, g: text;
kao što je bilo rečeno? Sem toga program ne radi ispravno, pogledaj ovaj deo:
Kod:
m:=mpa*a+mpb*b;
s:=na*a+nb*b-m;
ok:=m=s;
Pa ja sam to i radio u početku, ako si zaboravio. I eno šta mi se pojavljivala ona poruka, već sam vam predstavljao taj problem.

A u vezi ovog drugog, stvarno ne vidim u čemu je problem. Jesi li testirao program? Meni savršeno radi. Unesi bilo koje vrednosti, malo preračunaj i dobija se tačno.
 

Back
Top