Задачка на Turbopascal

Тема в разделе "Другие", создана пользователем kimon, 21 мар 2007.

Статус темы:
Закрыта.
  1. kimon

    kimon Гость

    Здравствуйте уважаемые форумчане! Столкнулся с задачкой на турбо Паскале, как решать вобщем понятно, но не получается написать кодом... Помогите пожалуйста разобраться... ;)

    Вот собственно задачка:
    Заданы два массива. Создать один массив в котором вначале идут четные элементы, затем нечетные. Четные элементы нового массива упорядочить в порядке убывания.
    Для отладки программы исходные массивы сформировать с помощью генератора случайных чисел.

    Понятно, что для сортировки на четные\нечетные надо использовать X mod 2 =0, проблема только как эту прогу оформить на паскале. :)

    Помогите пожалуйста, буду очень благодарен. :)
     
  2. zubr

    zubr Гость

    И чем эта задача интересна? Банальное вымогательство готового кода, причем старого как мир.
     
  3. kimon

    kimon Гость

    Ну а что же мне еще делать? Есть большой учебник по паскалю, прочитал все о массивах, но нигде не нашел даже как из двух массивов сделать один. Да и не требую я банально код, я прошу помочь мне, может кто подскажет каким образом правильно написать(например то же преобразование двух массивов в один), ато в книгах этого нет, и остается только на форумах учиться...
     
  4. Barmutik

    Barmutik Гость

    Ну есть два массива .. создать третий и в него поэлементно поместить элементы данных Вам двух массивов .. что конкретно сложно если Вы уже прочитали про массивы ?
     
  5. kimon

    kimon Гость

    ок, вот что я сделал, только что-то там не то...


    Program massiv;
    uses crt;
    var
    a:array[1..10] of integer;
    b:array[1..10] of integer;
    c:array[1..20] of integer;
    I,H,G,n,m:integer;

    begin
    writeln('Ввести размер 1-го массива:');
    readln(n);
    for I:1 to n do
    a:=random(100);
    for I:=1 to n do
    writeln(a);

    writeln('Ввести размер 2-го массива:');
    readln(m);
    for G:1 to m do
    b[G]:=random(100);
    for G:=1 to m do
    writeln(b[G]);

    writeln('Третий массив:');
    for Р:1 to 20 do
    c[H]:=a+b[G];
    for H:=1 to 20 do
    writeln(c[H]);

    end.


    Что я не так сделал?
     
  6. Barmutik

    Barmutik Гость

    Вот этот кусоче кода совсем мягко сказать не верен .. до него всё более менее верно .. не считая того что если Вы введёт размерность первого или второго массива больше 10 .. то всё упадёт..

    Начиная с него написано непонятно что...

    Код (Text):
    writeln('Третий массив:');
    for Р:1 to 20 do
    c[H]:=a[I]+b[G];
    for H:=1 to 20 do
    writeln(c[H]);
     
  7. kimon

    kimon Гость

    Да, я и сам понимаю...
    Я так понял надо заполнить массив с[H] элементами a[1],a[2]... b[10]. Я правильно понимаю? Пытался и так и сяк, но не пойму как эти все элементы перечислить. Подскажите пожалуйста, как их перечислить...
    Пробовал так:
    с[H]:=a[1],a[2],a[3], и т.д. но ничего не вышло...
     
  8. Barmutik

    Barmutik Гость

    Хммм.. 10 строчками Выше у Вас удачно получилось их перечислить и распечатать с помощью:

    Код (Text):
    for I:=1 to n do
    writeln(a[I]);
    а тут Вы вдруг забыли как к ним обращаться ..?
     
  9. kimon

    kimon Гость

    <!--QuoteBegin-Barmutik+22:03:2007, 21:11 -->
    <span class="vbquote">(Barmutik @ 22:03:2007, 21:11 )</span><!--QuoteEBegin-->а тут Вы вдруг забыли как к ним обращаться ..?
    [snapback]59864" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Я просто не пойму никак... :angry:
    Вот так попробовал, но что-то не то:

    Код (Text):
    for H:=a[I] to b[G] do
    writeln(c[H]);
    Как же их перечислить?
     
  10. Barmutik

    Barmutik Гость

    Ну явно не то ... обращаться номера записанного в I-й элемент массива А до номера записанного в G-й элемент массива B ...

    Создаётся впечатление ... что Вы не совсем вообще понимаете что Вы делаете :)

    Может стоит прочитать главу о работе с массивами ещё раз ? :angry:
     
  11. kimon

    kimon Гость

    На самом деле просто не хватает информации и практики... Есть большой учебник турбо паскаля(автор Немнюгин), там про массивы написано, но очень кратко и непонятно. Я еще со школы немного помню массивы, но там задачки были намного примитивнее. Я разобрался как заполнить массив по любой данной формуле, а заполнить массив двумя другими не хватает знаний...
    Я бы мог например заказать у кого-нибудь эту задачку за деньги, но дело не в деньгах, просто хочется самому до всего дойти... Был бы очень признателен если бы кто-нибудь мне в этом помог. :D

    Пытаюсь так делать, но снова что-то не то..:

    Код (Text):
    for H:=a[1] to b[10] do
     
  12. kimon

    kimon Гость

    Вот что еще надумал:

    Код (Text):
    for q:=a[1] to a[10] do
    for w:=b[1] to b[10] do
    writeln{c[q,w]};
    Есть хоть правильные мысли?
     
  13. Hetman

    Hetman Гость

    Иногда помогает, если попытаться объяснить самому себе задачу буквально "на пальцах" ничего не опуская и продразумевая, то есть следовать компьютерной логике - мелочей не бывает.
    например, вместо "что бы добраться из пункта А в пункт Б, нужно сеть в машину и доехать".
    но для этого ведь сначало надо так: "
    ...
    ...1. достать ключь
    ...2. вставить в замок зажигания
    ...3. включить ключ на старт
    ...4. Если машина завелась - пристегнутся, если нет повторить пункт 3"
    и далее в таком духе.

    <!--QuoteBegin-kimon+22:03:2007, 14:15 -->
    <span class="vbquote">(kimon @ 22:03:2007, 14:15 )</span><!--QuoteEBegin-->writeln('Третий массив:');
    for Р:1 to 20 do
    c[H]:=a+b[G];
    for H:=1 to 20 do
    writeln(c[H]);
    [snapback]59832" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    что ты здесь хотел сделать :) ?

    кстати для того что бы отсортировать элементы по возрастанию (убыванию) существует несколько способов - прочитай может пригодится Посмотреть вложение SORT.rar
     
  14. ~RedFox~

    ~RedFox~ Гость

    <!--QuoteBegin-kimon+21:03:2007, 13:43 -->
    <span class="vbquote">(kimon @ 21:03:2007, 13:43 )</span><!--QuoteEBegin-->Заданы два массива. Создать один массив в котором вначале идут четные элементы, затем нечетные.
    [snapback]59718" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Несколько непонятно условие задачи. Как должен формироваться третий массив? Заполняться четными элементами 1го массива, затем четными элементами 2го, а потом нечетными - 1го и 2 го? Или - четные элементы 1го, нечетные элементы 1го, четные элементы 2го, нечетные элементы 2го? А может вообще, два массива просто объединяются в третьем, а потом уже четные элементы третьего выносятся в начало массива, а нечетные - в конец? :)
     
  15. kimon

    kimon Гость

    <!--QuoteBegin-~RedFox~+25:03:2007, 01:44 -->
    <span class="vbquote">(~RedFox~ @ 25:03:2007, 01:44 )</span><!--QuoteEBegin-->Несколько непонятно условие задачи. Как должен формироваться третий массив? Заполняться четными элементами 1го массива, затем четными элементами 2го, а потом нечетными - 1го и 2 го? Или - четные элементы 1го, нечетные элементы 1го, четные элементы 2го, нечетные элементы 2го? А может вообще, два массива просто объединяются в третьем, а потом уже четные элементы третьего выносятся в начало массива, а нечетные - в конец?
    [snapback]60051" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Да, надо сначала объединить два массива в третий, а потом уже его сортировать...
     
  16. ~RedFox~

    ~RedFox~ Гость

    Так загвоздка в объединении массивов? :)
    Так это будет выглядеть:
    Код (Text):
    for i:=1 to n do
    c[i]:=a[i];
    for i:=1+n to m+n do
    c[i]:=b[i];
    А на JS, например, все намного проще :huh: :
    Код (Text):
    c=a.concat(b)
     
  17. kimon

    kimon Гость

    <!--QuoteBegin-~RedFox~+25:03:2007, 11:38 -->
    <span class="vbquote">(~RedFox~ @ 25:03:2007, 11:38 )</span><!--QuoteEBegin-->Так это будет выглядеть:
    [snapback]60063" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Спасибо за подсказку, только почему-то у меня не получается массив этот вывести...
    Подогнал под свой случай, получилось так:

    for H:=1 to n do
    c[H]:=a[H];
    for H:=1+n to m+n do
    c[H]:=b[H];
    writeln(c[H]);

    Так должно быть? Или я опять туплю? :)
     
  18. ~RedFox~

    ~RedFox~ Гость

    Массив поэлементно надо выводить:
    Код (Text):
    for H:=1 to m+n do
    writeln(c[H]);
     
  19. kimon

    kimon Гость

    Хм... Никак.. <_< Что-то у меня третий массив получается состоит из первого, а вместо второго там совсем другие числа... Т.е. вторым массивом не получается заполнить..
    Вот какой у меня код вышел для третьего массива:

    Код (Text):
    ...
    for H:= to n do
    c[H]:=a[H];
    for H:=1+n to n+m do
    c[H]:=b[H];
    for H:=1 to n+m do
    writeln(c[H]);
    ...
     
  20. S-haman

    S-haman Гость

    код я б реализовал следующим образом мне кажеться быстрее будет
    for h:=1 to n do
    begin
    c[h]:=a[h];
    writeln(c[h]);
    end;
    for h:=n to n+m do
    begin
    c[h]:=b[h];
    writeln(c[h]);
    end;
     
Загрузка...
Похожие Темы - Задачка на Turbopascal
  1. Hehabr
    Ответов:
    1
    Просмотров:
    485
  2. Gepard26
    Ответов:
    0
    Просмотров:
    1.113
  3. lisica198808
    Ответов:
    0
    Просмотров:
    1.018
  4. student55
    Ответов:
    1
    Просмотров:
    1.711
  5. vbs
    Ответов:
    21
    Просмотров:
    7.505
Статус темы:
Закрыта.

Поделиться этой страницей