Имя: Пароль:
IT
 
Написал племяшке программку на паскале, сказали что все не так
0 Klesk
 
26.12.11
13:54
Условие:
Вводятся размер одномерного массива и его элементы. Составить новый массив из элементов исходного массива, у которых произведение  цифр является двухразрядным числом.

-------------------------------------------------------
const
  max=10000;{max razmer massiva}
type
   mas = array[1..max] of integer;
var x:mas; {ishodniy massiv}
y:mas;   {noviy massiv}
n:byte;  {razmer ishodnogo massiva}
m:byte;  {razmer novogo massiva}
s:string;{vspomogat stroka}
ch:integer;{vspomogat chislo}
i:byte;   {schetchik cikla}
j:byte;   {schetchik cikla}
proiz:integer; {proizvedenie}
err:integer;{oshivka preobrazovania stroki v chislo (vspomogat)}
begin
    writeln('Vvedite razmer massiva');
    readln(n);
    for i:=1 to n do begin
        write('Vvedite element # '); writeln(i);
        readln(x[i]);
    end;
    m:=0;
    for i:=1 to n do begin
        str(x[i],s);
        proiz:=1;
        for j:=1 to length(s) do begin
            val(s[j],ch,err);
            proiz:=proiz*ch;
        end;
        str(proiz,s);
        if length(s)=2 then begin
               m:=m+1;
               y[m]:=x[i];

        end

    end;
    if m<>0 then begin
     writeln('Vivodem massiv proizvedenie cifr kotorogo dvuhrazriadno');
    for i:=1 to m do writeln(y[i]);
    end
    else
    writeln('Znacheniya u kotorih proizvedenie cifr  dvuhrazriadno otsutstvuut');

end.

-------------------------------------
подскажите, что то я напорол, или среда сейчас другая какая то у них в универе, чисто уже самому интересно.
1 URAL
 
26.12.11
13:55
серьезно, ничего не понятно, надо переписать чтобы было понятно ))))
2 garcevis
 
26.12.11
13:58
Может двухразрядные определять как от 10 до 99, а не через длину строки
3 Asmody
 
26.12.11
13:58
(0) сходу: почему n и m — byte, когда max явно не byte?
и что это за манера оперировать числами через String?
4 Asmody
 
26.12.11
14:00
и что за ВУЗ такой, где до сих пор паскаль учат? это всё на python или ruby в две строчки пишется
5 jsmith82
 
26.12.11
14:00
а что, в школе до сих пор преподают этот атавизм прошлого?
6 jsmith82
 
26.12.11
14:01
напиши на си шарп, порви преподу крышу
7 Megas
 
26.12.11
14:03
(4)(5) Да наверное ещё пока что везде... =)
8 Megas
 
26.12.11
14:04
Вообще смотря на (0) на первый взгляд всё так!
А что надо было сделать ?  =)
9 MaxxiMiliSanM
 
26.12.11
14:04
напиши на асме, порви преподу крышу 2
10 1nf
 
26.12.11
14:05
напиши на brainfuck, порви крышу себе О_о
11 jsmith82
 
26.12.11
14:06
я задачу вообще не понял
12 Megas
 
26.12.11
14:07
Я понял... задание.

Так что там, она делает что надо?  
что не так? Препод вообще должен сказать!
13 Megas
 
26.12.11
14:08
Задача простая.. есть массив. Перемножить все его элементы между собой и если в произведении получается 2 разряда тогда пишем в новый массив
14 GLazNik
 
26.12.11
14:09
(0) А может имеет смысл сверится с курсом племяшки? Может они там какой-нить метод пузырька изучают :)
15 1nf
 
26.12.11
14:09
у меня в универе примерно такая тетка была, тоже паскалю учила, если код с ее не совпадает посимвольно, то все неправильно и иди переделывай
16 Shurjk
 
26.12.11
14:09
Паскаль самый лучший язык для обучения.
(0) А оно вообще работает, там на первый взгляд с типами полная задница должна получиться.
17 Shurjk
 
26.12.11
14:10
(13) Между собой это как) каждый с каждым?
18 Shurjk
 
26.12.11
14:10
(15) А то что програ работает ее не волновало?
19 Megas
 
26.12.11
14:10
Я понял чё не так  =)

вообще какаята хня написана =) Я бы подругому сделал
20 Klesk
 
26.12.11
14:11
(2) да наверно проще, и правильнее
(3) с типами чисто подзабыл, как правильно?

может есть какая среда паскаля посовременнее , я под дос

(16) работает
21 jsmith82
 
26.12.11
14:11
пылять. да любые цифры перемножь получится двуразрядка
22 VVi3ard
 
26.12.11
14:11
Напомнило:
IF STR(variable)="TRUE" then
23 kotletka
 
26.12.11
14:12
(21)1*1
24 GLazNik
 
26.12.11
14:12
(21) даже если перемножить все цифры в числе 11111? Или 10000? :)
25 Megas
 
26.12.11
14:13
(17) похоже что да

(20) Странно что работает... а насчёт 2 разряда это    
X>= 10 and <= 99 ... что не через преобразование.
Кстати а если будут числа -1 и 5 = у тебя выйдет "-5" = длинна 2
26 1nf
 
26.12.11
14:13
(18) Дык сдавать надо было на листочке, рабочая на компутере это не труЪ
27 jsmith82
 
26.12.11
14:13
я к тому что задача какая-то мутная
28 Klesk
 
26.12.11
14:13
(3)  << и что это за манера оперировать числами через String?

манера програмисста 1С :)
29 Megas
 
26.12.11
14:13
(21) 99 * 99 явно больше 2 разряда
30 jsmith82
 
26.12.11
14:14
я так понимаю, племяшка учится не на прогера
31 VladZ
 
26.12.11
14:15
(0) writeln('Vvedite razmer massiva'); - разве Паскаль с русским не дружит?
32 Klesk
 
26.12.11
14:15
(30)нет
33 Креатив
 
26.12.11
14:15
(0)Для отделения цифр нужно использовать операторы div  и mod. Строки в данном случае - зло и тормоза.
34 Shurjk
 
26.12.11
14:15
(28) Кстати наверное надо какой то алгоритм использовать для поиска таких чисел, а не тупо перебором решать. Да и условие какое то мутное.
35 kotletka
 
26.12.11
14:16
(29)число<>цифра
36 Vladal
 
26.12.11
14:18
Думаю, решать рекурсивно - перемножить элементы исходного массива, из них сформировать второй.
Потом перемножить второй...
На выходе получится фигня - 2-3 элемента, произведение которых всегда будет двузначным.
37 GLazNik
 
26.12.11
14:18
(31) Ну это явно не самая главная ошибка :)
(32) И я таки думаю что конспектики не мешало бы проверить :) Ибо может быть (34), который они изучали совсем недавно.
38 strh
 
26.12.11
14:18
(0) на мой взгляд при работе с числами не красиво разрядность числа определять через строку и как и получать цифры
39 Klesk
 
26.12.11
14:18
угу, всем спасибо понятно
40 jsmith82
 
26.12.11
14:20
напомнило
вывести все цифры, которые являются цифрами
41 Креатив
 
26.12.11
14:21
(36)Задача-то состоит в том, чтобы брать элементик первого массива, перемножать его циферки. Если в результате получится двухзначное число, то записывать его в новый массив.
42 Klesk
 
26.12.11
14:24
сильно тупанул со строками, надо было 9> x <100
43 Йохохо
 
26.12.11
14:37
если это начальный какой то курс, легко зарежут за отсутствие контроля ввода и превышения размера массива.

xmas радует глаз, остальной транслит вызывает резкое отвращение =) 41$|0 уж тогда
44 orefkov
 
26.12.11
14:45
(0)
Да уж, произведение цифр определять через строки/символы, это сродни
if(val.toString().length == 4) // "true"

Вот так надо:

Тест = масс[i];
Пр = 1;
Если Тест > 0 Тогда
   Пока Тест > 0 И Пр > 0 Цикл
       Пр = Пр * (Тест % 10);
       Тест = Цел(Тест / 10);
   КонецЦикла;
Иначе
   Пр = 0;
КонецЕсли;
45 DailyLookingOn Sunset
 
26.12.11
14:46
Ну как бы есть только вывод нового массива на экран.
А в памяти этот массив так и остался [1..max]. Т.е. при передаче данных в другой алгоритм будет ошибка.
Массивы переменной размерности вроде уже были в Дельфи 4.
46 Волесвет
 
26.12.11
14:54
аорпо4лол5
вот такой элемент в одномерном массиве и он может быть введен, произведение чисел в нем равен 20

имхо: нужна проверка является числом
47 Волесвет
 
26.12.11
14:56
+(46) задачка на массивы скорее всего заводится массив чисел от 0 до 9 в котором ищется. если находится то умножается, смотрим произведение, если попадает в условие то записываем в итоговый массив
48 orefkov
 
26.12.11
14:56
(46)
Вы с этим 1С уже с ума посходили :)
Откуда в Паскале в

mas = array[1..max] of integer;

элемент "аорпо4лол5" ?
Он же "of integer"
49 dmpl
 
26.12.11
14:59
(48) Тогда все неправильно - в условии нигде нет указания, что элементы массива - числа.
50 Волесвет
 
26.12.11
15:00
(48) про интежер в условии не сказано
51 orefkov
 
26.12.11
15:04
(49)
Наверняка то, что это интежер, понятно из контекста темы, да и "произведение его цифр" как бы намекает...
Вряд ли вам бух в ТЗ пишет - "сумма в колонке должна выводится числом рублей из арабских цифр, далее точка, далее число копеек, двумя арабскими цифрами", а то вы все норовите то римскими, то в hex вывести, то словами.
52 Песец
 
26.12.11
15:13
(4) Надо подстраиваться под уровень за кого делаешь уроки, если студень простейшую задачу не способен осилить, то решить надо, конечно, правильно, но дубовым способом.
53 dmpl
 
26.12.11
15:16
(51) Где сказано, что это целые числа, а не вещественные?
54 orefkov
 
26.12.11
15:54
(53)
О, прожженый прог - "в ТЗ нет - идите нафиг".
Не тупите, в задачах для племяшек при освоении массивов априори предполагается, что это массив целых чисел.
55 Fragster
 
гуру
26.12.11
16:01
все не так - из-за того, что лабораторная должна реализовывать динамическое выделение памяти, не?
56 Fragster
 
гуру
26.12.11
16:02
раз уж "вводим размер массива"
57 ado
 
26.12.11
16:03
(48) Бгггг. Боюсь, многие одноэсники и не знают, что в этом мире бывает строгая типизация. Многие ведь на 1С программировать учились.
58 el-gamberro
 
26.12.11
16:04
(0) Автор ты тебя русскому в школе что-ли не учили? Пиши код нормально и понятно, а то какие-то непонятные латинские символы
59 dmpl
 
27.12.11
09:21
(54) Не, "В ТЗ этого нет - уточните ТЗ".