Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 11 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 13.04.07
Prihlásený: 15.05.09
Príspevky: 68
Témy: 9
Príspevok NapísalOffline : 20.04.2007 17:12

nemohli by ste mi niekto napisat syntax StrToInt prikazu?? v pascal helpe mam nieco taketo :

i:=StrToInt(str)

kde i je premenna typu integer, str je premenna typu string.. lenze ked to tam takto zadam napise mi Error3 : Unknown identifier.... :loony:


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.11.06
Prihlásený: 31.12.07
Príspevky: 677
Témy: 9
Príspevok NapísalOffline : 20.04.2007 17:49

a máš deklarované premenné i a str? lebo je to správen.. strtoint prevedie textový reťazec ktorý máš uložený v premennej str a uloží to do premennej i ktora je typu integer


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 13.04.07
Prihlásený: 15.05.09
Príspevky: 68
Témy: 9
Príspevok Napísal autor témyOffline : 20.04.2007 20:03

jasne ze mam deklarovane :) zajtra sem hodim zdrojovy kod a presne zadanie ulohy...


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 13.04.07
Prihlásený: 15.05.09
Príspevky: 68
Témy: 9
Príspevok Napísal autor témyOffline : 21.04.2007 14:18

takze zadanie: na vstupe je rad znakov ukoncenych bodkou(veta).napiste program, ktory : 1. zisti pocet znakov vo vete.
2. zisti, kolko z nich je cislic.
3.scita zistene cislice z retazca.

to co som napisal ja (zdrojovy kod):
Kód:
program bodka;
uses crt;
var veta:string;
      i,k,suc,poc:integer;
begin
  clrscr;
  writeln('zadaj vetu');
  readln(veta);
  writeln('pocet znakov vo vete je',length(veta)); {zisti pocet znakov vo                           
                                                                         vete}
  poc:=0;suc:=0;
  for i:=1 to length(veta) do
      case veta[i] of '1'..'9' : begin
                                           inc(poc);        {zisti pocet cislic}
                                           k:=StrToInt(veta[i]);
                                           suc:=suc+k;   {zisti sucet cislic}
                                       end;
       end
   writeln('pocet cislic vo vete je ',poc);
   writeln('sucet cislic vo vete je ',suc);
   readln;
end.



poznamka: neberiem do uvahy vyskyt cisel vacsich ako 9.


Offline

Užívateľ
Užívateľ
StrToInt

Registrovaný: 02.09.05
Prihlásený: 17.11.10
Príspevky: 154
Témy: 1
Príspevok NapísalOffline : 21.04.2007 16:25

Tu fciu StrToInt si musis napisat sam(inak ona je v pascal helpe napisana), moze vyzerat takto :
Kód:
function StrToInt(value : string) : integer;
var code, num : integer;
begin
   Val(value, num, code);
   StrToInt := num;
end;


a este by som povedal nieco k tomu tvojmu programu :
Mas tam 1 logicku chybu, ze ak v tom retazci je cislo 0, tak ho nezaregistrujes, teda neinkrementujes pocet cislic...
Takze tu je kompletna verzia tvojho programu :

Kód:
program bodka;
uses crt;
var veta:string;
      i,suc,poc:integer;

function StrToInt(value : string) : integer;
var code, num : integer;
begin
   Val(value, num, code);
   StrToInt := num;
end;

begin
  clrscr;
  writeln('zadaj vetu');
  readln(veta);
  writeln('pocet znakov vo vete je',length(veta)); {zisti pocet znakov vo    vete}
  poc:=0;
  suc:=0;
  for i:=1 to length(veta) do
      if (veta[i] in ['0'..'9']) then begin
             inc(poc); {zisti pocet cislic}
             inc(suc, StrToInt(veta[i])); {zisti sucet cislic}
      end;
   writeln('pocet cislic vo vete je ',poc);
   writeln('sucet cislic vo vete je ',suc);
   readln;
end.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 13.04.07
Prihlásený: 15.05.09
Príspevky: 68
Témy: 9
Príspevok Napísal autor témyOffline : 21.04.2007 18:34

dakujem za opravenie tej chybnej 0 a aj za vyriesenie. funguje to len neviem co to robi.nemohol by si mi prosim vysvetlit co urobi ta funkcia??


Offline

Užívateľ
Užívateľ
StrToInt

Registrovaný: 02.09.05
Prihlásený: 17.11.10
Príspevky: 154
Témy: 1
Príspevok NapísalOffline : 22.04.2007 21:37

neznamy píše:
dakujem za opravenie tej chybnej 0 a aj za vyriesenie. funguje to len neviem co to robi.nemohol by si mi prosim vysvetlit co urobi ta funkcia??
No ta funkcia jednoducho prevadza retazec na cislo, pokial je to mozne...A vo svojom vnutri vola fciu, ktora je definovana v pascali , teda VAL, ktora prevedie retazec na cislo, ibaze pouziva 3 vstupne premenne, prva je retazec, druha je typu integer a je volana odkazom a tretia premenna je taktiez typu integer a volana odkazom a pri nespravnom prevadzani retazca na cislo vracia kod , ktory znamena chybu...


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.11.06
Prihlásený: 31.12.07
Príspevky: 677
Témy: 9
Príspevok NapísalOffline : 22.04.2007 21:56

programator píše:
No ta funkcia jednoducho prevadza retazec na cislo, pokial je to mozne...A vo svojom vnutri vola fciu, ktora je definovana v pascali , teda VAL, ktora prevedie retazec na cislo, ibaze pouziva 3 vstupne premenne, prva je retazec, druha je typu integer a je volana odkazom a tretia premenna je taktiez typu integer a volana odkazom a pri nespravnom prevadzani retazca na cislo vracia kod , ktory znamena chybu...
nevracia žiaden kód, vracia miesto kde nastala chyba (teda prvý znak ktorý nevie previesť na číslo) a to je trošku rozdiel.

a ešte k tomu tvojmu riešeniu:
mal si overiť či je code<>0 lebo ak ti tam podhodím text tak tá funkcia strtoint je rovnako oničom ako val (mala by upozorniť že sa nedá previesť a zastaviť beh programu)


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 13.04.07
Prihlásený: 15.05.09
Príspevky: 68
Témy: 9
Príspevok Napísal autor témyOffline : 23.04.2007 17:14

programator: dakujem. som potreboval pocut hlavne co robi ten code kedze ho tam potom nepouzivas. ale teraz je to uz jasne :)


Offline

Užívateľ
Užívateľ
StrToInt

Registrovaný: 02.09.05
Prihlásený: 17.11.10
Príspevky: 154
Témy: 1
Príspevok NapísalOffline : 23.04.2007 22:52

audiotrack píše:
nevracia žiaden kód, vracia miesto kde nastala chyba (teda prvý znak ktorý nevie previesť na číslo) a to je trošku rozdiel.

a ešte k tomu tvojmu riešeniu:
mal si overiť či je code<>0 lebo ak ti tam podhodím text tak tá funkcia strtoint je rovnako oničom ako val (mala by upozorniť že sa nedá previesť a zastaviť beh programu)
Ano to je pravda s tym ze vracia prvy znak (dakujem za si ma opravil, pomylil som si to), ale myslim ze overovat v tej funkcii ci je code<>0 je v tomto pripade zbytocne, pretoze pred zavolanim funkcie sa overuje v podmienke, ci je dany znak v mnozine cisel od 0 po 9 (if (veta[i] in ['0'..'9']) then ......) ;)


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.11.06
Prihlásený: 31.12.07
Príspevky: 677
Témy: 9
Príspevok NapísalOffline : 24.04.2007 17:27

programator píše:
Ano to je pravda s tym ze vracia prvy znak (dakujem za si ma opravil, pomylil som si to), ale myslim ze overovat v tej funkcii ci je code<>0 je v tomto pripade zbytocne, pretoze pred zavolanim funkcie sa overuje v podmienke, ci je dany znak v mnozine cisel od 0 po 9 (if (veta[i] in ['0'..'9']) then ......) ;)
keď robíš funkciu, tak ju dotiahni do konca.. čo ak ju budeš neskôr znovu potrebovať? a potom znovu a znovu..?


Odpovedať na tému [ Príspevkov: 11 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Strtoint v subore pascal

v Assembler, C, C++, Pascal, Java

19

569

03.06.2013 23:06

BX Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra