[ 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 | 9
NapísalOffline : 20.04.2007 17:12 | StrToInt

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 | 9
NapísalOffline : 20.04.2007 17:49 | StrToInt

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 | 9
Napísal autor témyOffline : 20.04.2007 20:03 | StrToInt

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 | 9
Napísal autor témyOffline : 21.04.2007 14:18 | StrToInt

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 | 1
NapísalOffline : 21.04.2007 16:25 | StrToInt

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 | 9
Napísal autor témyOffline : 21.04.2007 18:34 | StrToInt

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 | 1
NapísalOffline : 22.04.2007 21:37 | StrToInt

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 | 9
NapísalOffline : 22.04.2007 21:56 | StrToInt

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 | 9
Napísal autor témyOffline : 23.04.2007 17:14 | StrToInt

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 | 1
NapísalOffline : 23.04.2007 22:52 | StrToInt

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 | 9
NapísalOffline : 24.04.2007 17:27 | StrToInt

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..?


 [ Príspevkov: 11 ] 


StrToInt



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

600

03.06.2013 23:06

BX



© 2005 - 2025 PCforum, edited by JanoF