[delphi] Найти количество элементов массива

Тема в разделе "Delphi - FAQ", создана пользователем KreN.del, 26 ноя 2006.

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

    KreN.del Гость

    Не могу понять каким кодом реализовать эту программу.

    Дан одномерный целочисленный массив А состоящий из N элементов (0<N<20;-10000<A<10000).Найти количество элементов,старшая и младшая цифры которых совпадают.

    Кто мне может подсказать....
    Буду примного благодарен, если вы мне напишите код этой маленькой программы..
     
  2. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    <!--QuoteBegin-KreN.del+26:11:2006, 19:57 -->
    <span class="vbquote">(KreN.del @ 26:11:2006, 19:57 )</span><!--QuoteEBegin-->Найти количество элементов,старшая и младшая цифры которых совпадают.
    [snapback]48942" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    КАК такое может быть у одномерного массива... может массивов несколько...

    может надо получить кол-во одинаковых минимальных и максимальных значений???
     
  3. Programmer_Hard

    Programmer_Hard Гость

    очень просто:

    на C++ , паскаль не помню :

    int first=A[0];
    for(int i=1;i<20;i++){
    if(A==A[0]) break;
    }

    rezultat = i+1
     
  4. Barmutik

    Barmutik Гость

    Для: Morpheus

    Да всё понятно .. ему надо найти число элементов у которых в написании первая и последняя цифра одинаковые .. например число 121, 2562 ему подходит, а 43 нет...
     
  5. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Для: Barmutik
    тьфу... не сразу вьехал :(
     
  6. Programmer_Hard

    Programmer_Hard Гость

    Тогда так

    int first(int a){
    int f=0;
    for(int i=0;i<10;i++){
    if(f=(a/(10*i))<10) break;
    }
    return f;
    };

    int lost(int a){
    int l;
    l=a%10;
    }

    int kol_vo=0;
    for(int i=0;i<20;i++){
    if(first(A)==lost(A)) kol_vo++;
    }

    cout<<kol_vo;
     
  7. DIR3ct0r

    DIR3ct0r Гость

    Как вариант:
    1. переводим значение массива в строку
    s:= IntToStr(a);
    2. получем первую и последнюю цифры
    s1:= copy(s, 1, 1);
    sN:= copy(s, Length(s), 1);
    3. сравниваем, если равны увеличиваем счетчик
    if s1 = sN then Inc(Counter);

    Код (Text):
    var i, Counter: integer;
    Counter:= 0;
    for i:= 0 to n do
    if copy(s, 1, 1) = copy(s, Length(s), 1) then Inc(Counter);
    ShowMessage(IntToStr(Counter));
     
  8. KreN.del

    KreN.del Гость

    Ты не мог бы полный код программы написать начиния с var и заканчивая end'om...
    И насчет C++ , я прогу выполняю на языке Pascal...
     
  9. Barmutik

    Barmutik Гость

    Для: KreN.del

    Ну вам же вроде предоставили полынй код на С++ .. траслируйте его в Паскаль...
     
  10. KreN.del

    KreN.del Гость

    Я просто пока на стадии обучения и не знаю как транслировать из языка в язык..
    Поэтому если бы ты помог и я научился это делать на моем примере.. Было бы супер..
     
  11. DIR3ct0r

    DIR3ct0r Гость

    я полный код и представил, только begin с end не написал
    Код (Text):
     
    var
    i, Counter: integer;
    begin
    Counter:= 0;
    for i:= 0 to n do
    if copy(s, 1, 1) = copy(s, Length(s), 1) then Inc(Counter);
    writeln(Counter);
    end;
     
  12. pinhead

    pinhead Гость

    Мне кажется код не дописан. :)
    Код (Text):
    var
    i, Counter: integer;
    begin
    Counter:= 0;
    for i:= 0 to n do
    if copy(s, 1, 1) = copy(s, Length(s), 1) then Inc(Counter);
    writeln(Counter);
    end;
    Я не говорю не правильный, у DIR3ct0r, просто не дописан.
    Вот завершённый код
    Код (Text):
    Program TorhOFF;
    uses
    CRT;
    const
    N=20;
    var
    i, Counter: word;
    s: String;
    arr: array[1..N] of integer;

    Procedure InitArray;
    begin
    {Процедуру инициализации(заполнения) массива напишите сами}
    end;

    begin
    Counter:= 0;
    InitArray;
    for i:= 1 to N do
    begin
    Str(arr[i], s);
    if copy(s, 1, 1) = copy(s, Length(s), 1) then
    Inc(Counter)
    end;
    writeln(Counter)
    end.
    Уж простите за дотошность. :(
     
  13. acorn

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    Для: pinhead
    Какой uses CRT, а вдруг надо написать на Object Pascal в среде Delphi? Лучше написать код, который менее зависим от компилятора.
     
  14. pinhead

    pinhead Гость

    Для Acorn
    Uses CRT написал по привычке. <_<
    И заметьте ни одной процедурой и функцией из этого модуля не воспользовался.
    И ещё недочёт, уже в моей программе :( , вместо
    Код (Text):
    Str(arr[i], s);
    надо писать
    Код (Text):
    Str(abc(arr[i]), s);
    так как в задании сказано что числа могут быть как положительные так и отрицательные!
     
  15. KreN.del

    KreN.del Гость

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

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