infoarena

infoarena - concursuri, probleme, evaluator, articole => Teme => Subiect creat de: Gorgan Razvan-Florin din Iunie 08, 2011, 18:07:14



Titlul: Problema banala Pascal
Scris de: Gorgan Razvan-Florin din Iunie 08, 2011, 18:07:14
 Buna. Ma tot chinui cu o problema, dar nu pentru ca nu i-as sti algoritmul ci pentru ca imi da o eroare care nu stiu cum s-o interpretez. Am incercat multe feluri de algoritm dar aceeasi eroare. Problema este urmatoarea:

  Determinati numerele de patru cifre distincte divizibile la fiecare din cifrele care le compun. (Stiu, e banala).

 Un algoritm care sa nu se intinda prea mult prin (i div 10) mod 10 si tot asa este acesta:

program distinct;
var i,c:longint;s,t:byte;
begin
 for i := 1000 to 9999 do
  begin
  s := 0;
  c := i;
  if i mod 1111 <> 0 then
  repeat
   t := c mod 10;
   c := c div 10;
  if i mod t = 0 then s := s + 1;
  until c = 0;
  if s = 4 then writeln(i);
  end;
readln;
end.

 Eroarea este :  raised exception class 'External: SIGFPE'.
 
 Banuiesc ca este de la tipul variabilelor dar am incercat o gramada de combinatii => 0. Eroarea zice ca e pe linia :
 if i mod t = 0 then s := s + 1

 Multumesc


Titlul: Răspuns: Problema banala Pascal
Scris de: cont cu nume gresit sau fals din Iunie 08, 2011, 18:15:25
Pentru i=1000 (de exemplu) prima valoare pe care o ia t este 0, iar tu nu verifici daca t este 0 si prin urmare ceri restul lui i la 0.
De aici vine eroarea


Titlul: Răspuns: Problema banala Pascal
Scris de: Gorgan Razvan-Florin din Iunie 08, 2011, 18:17:58
 Da! Intr-adevar. Multumesc, ma mai gandesc ...