Andis Ierakstīts Februāris 21, 2012 Share Ierakstīts Februāris 21, 2012 (labots) Sveiki jau atkal! Atkal man ir radusies maza problēmiņa, ar kuru netieku galā.. Īsumā: Veikt simbolu apstrādi individuālam uzdevumam. Rezultātu izvadīt tādā formā, kas ļauj lietotājam pārliecināties par izvēlētā algoritma pareizu darbību. Uzdevums: Pārveidot ievadīto simbolu rindu tā, lai rindā paliktu tikai reālie skaitļi. Reālos skaitļos punktu aizvietot ar komatu. Tātad, cik es noprotu, un, protams, cik es māku no šī visa pasākuma ir tas, ka pirmā prasība apmērma balstās tā: program Project2; {$APPTYPE CONSOLE} uses SysUtils; var a:array[1..30]of string; n,k:integer; realie:array[1..30]of string; begin writeln; writeln('------------------------------------------------------------------------'); writeln('Sis programmas merkis ir izvadit no simbolu rindas realos skaitlus!!'); writeln('Ludzu, ievadiet vairakus skaitlus, lai no tiem atlasitu realos skaitlus!'); writeln('------------------------------------------------------------------------'); write('Cik simbolus ievadisiet:? '); readln(k); for n:=1 to k do begin write('Simbolu rinda: '); //write('Simbolu rinda: '); readln(a[n]); end; writeln('Paldies! Informacija ir apkopota!'); for n:=1 to k do begin if (a[n] > '0') and (a[n] <= '999.99') then begin realie[n]:=realie[n]+a[n]; write(realie[n],';'); end; end; readln; end. Un pat tādā gadījumā programma man neizvadīs negatīvos reālos skaitļus. Noprotu, ka simbolu ievadei derēs arī mans paņēmiens, tiesa? Taču kā punktu aizstāt ar komatu? Prāts liek man domāt, ka darbība notiks ar Length, bet kā tad tas izskatās kodā? Edit! Ehh, es tikai tikko apjautu to, ka no manis ir prasīta viena simbolu rinda, respektīvi, sanāk tā: ashashaahash 5.67 aaah 8 hasha Un tad laikam man no tās rindas ir jāatrod un jāizvelk reālie, ko es jau nemācēšu tiešām, padomi? Sanāk, ka viss, ko esmu rakstījis ir nelietojams. Labi, skatos, ka neviens man tā arī nesniedza palīdzīgu roku ar padomu, tāpēc parkodēju pats, cik nu pratu. Rezultāts. Programma izvada reālos skaitļus no simbolu rindas, bet nespēj sekmīgi tos aprēķināt, ja vērtība ir reāla, nevis integer. Teiksim tā, rakstot: andis 5 7 es iegūšu summu 12, bet tajā pašā laikā, ja es rakstītu: andis 5.1 2, tad programma rēķinātu: 5+1+2=8.. Kāpēc tā? program Project1; {$APPTYPE CONSOLE} uses SysUtils; var u:array[1..10]of real; f:array[1..10]of string = ('0','1','2','3','4','5','6','7','8','9'); o:array[1..26]of string = ('a','b','c','d','e','f','g','h','i','j','k','l', 'm','n','o','p','q','r','s','t','u','x','y','z','v','w'); a,s,m,t:string; l,k,n,q,i:integer; sum:real; begin writeln; writeln('------------------------------------------------------------------------'); writeln('Sis programmas merkis ir izvadit no simbolu rindas realos skaitlus!!'); writeln('Ludzu, ievadiet vairakus simbolus, lai no tiem atlasitu realos skaitlus!'); writeln('------------------------------------------------------------------------'); writeln; write('Ievadit simbolu rindu: '); readln(a); m:=''; l:=length(a); for n:=1 to l do begin s:=Copy(a,n,1); if (s = '.') then m:=m+s; for q:=1 to 26 do begin s:=Copy(a,n,1); t:=Copy(a,n+1,1); if (s = ' ') and (t = o[q] ) then m:=m; end; for k:=1 to 10 do begin s:=Copy(a,n,1); t:=Copy(a,n+1,1); if (s= ' ') and (t = (f[k]))then m:=m+s; if (s = (f[k]))then m:=m+s; end; end; writeln; Write('Simbolu rindas realie sk.: '); writeln(m); writeln; sum:=0; for n:=1 to l do begin Val(m[n], u[n], i); sum:=sum+u[n]; end; writeln('Ciparu summa ir : ', sum:2:2); readln; Labots Februāris 20, 2012 - Andis Link to comment Share on other sites More sharing options...
Recommended Posts
Izveido kontu, vai pieraksties esošajā, lai komentētu
Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas
Izveidot jaunu kontu
Piereģistrējies un izveido jaunu kontu, tas būs viegli!
Reģistrēt jaunu kontuPierakstīties
Jums jau ir konts? Pierakstieties tajā šeit!
Pierakstīties tagad!