Проверки за число

Да се напише програма, която позволява са се въведе цяло число  и проверява дали числото е:

  • положително
  • четно
  • едноцифрено
  • двуцифрено
  • трицифрено
Публикувано в с етикети . Постоянна връзка.

4 Responses to Проверки за число

  1. Lubomir Dizela каза:
     program Project1;
       var
       c: integer;
    begin
      WriteLn('Vuvedete chislo, koeto da bude provereno:');
      ReadLn(c);
      if  c<0 then WriteLn('Chisloto e otricatelno') else WriteLn('Chisloto e polojitelno');
      if c mod 2=0 then WriteLn('Chisloto e chetno') else WriteLn('Chisloto e nechetno');
      if ((c<9) and (c>0) or (c>-9) and(c<9)) then WriteLn('Chisloto e ednocifreno')
      else if ((c>9) and (c<=99) or (c<-9) and (c>=-99)) then WriteLn('Chisloto e dvucifreno')
      else if ((c>99) and (c<=999) or (c<-99) and (c>=-999)) then WriteLn('Chisloto e tricifreno');
      ReadLn;
    end.                        
    • Данаил каза:

      Любо, супер – проверката за едно-/дву-/трицифрено работи и за отрицателни числа! Хубаво е, че си се сетил и за това.

      Ако обаче поставяш командите след then и else на нов ред, кодът на програмата ще бъде по-четлив.

  2. kaloyan каза:
    VAR chislo : integer;
    BEGIN
      write('vavedi chislo '); readln(chislo);
        if ((chislo>=0) and (chislo<=9)) then
          writeln('vavedenoto chislo e ednocifreno')
        else
        if ((chislo>=10) and (chislo<=99)) then
        writeln('vevedenoto chislo e dvucifreno')
        else
        if ((chislo>=100) and (chislo<=999)) then
          writeln('vavedenoto chislo e tricifreno')
        else writeln('vavedenoto chislo e mnogocifreno');
    
        if ((frac(chislo/2))=0) then
          writeln('chisloto e chetno')
        else
        if ((frac(chislo/2))>0) then
          writeln('chisloto e nechetno');
    
    readln;
    END.     
    • Данаил каза:

      Калояне, всичко е вярно и изглежда много добре :-)

      Програмата може още съвсем малко да се оптимизира: например едно число не може да бъде хем четно, хем нечетно. Така че ако си проверил за четно, нямаш нужда от втори if отдолу и проверка за нечетно – може директно да поставиш командата за отпечатване. Щом не е вярно, че е четно, няма какво друго да е, освен да е нечетно.

      Другото е проверката за четни числа. Оригинален е начинът по който си го направил и се радвам че си се сетил сам. За целочислени числа обаче е по-коректно да проверяваш дали са кратни на нещо с mod, а не с Frac. С mod ще е по-бързо (макар и незначително), защото имаш само една операция и тя е целочислена, а те са по-бързи. По твоят начин имаш две операции (деление и frac) и те са с реални числа, които по принцип изискват повече време за пресмятане от процесора. За една проверка разликата във времето за изпълнение е нищожна, но ако този код се намира в програма, която извършва например 100 000 проверки, там може и да се усети.

Вашият коментар