Важная информация
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 20

Тема: Помогите написать программу вычисления совпадающих элементов в массиве

  1. #1 Помогите написать программу вычисления совпадающих элементов в массиве 
    Новичок
    Регистрация
    26.05.2011
    Сообщений
    7
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях
    Условие звучит так: в массиве M(k) много совпадающих элементов. Найти количество совпадающих элементов в нем (не упорядочивая массива). Сама программа на Qbasic
    Ответить с цитированием  
     

  2. #2  
    Модератор Аватар для pingvin
    Регистрация
    11.02.2011
    Сообщений
    389
    Сказал(а) спасибо
    80
    Поблагодарили 75 раз(а) в 48 сообщениях
    А элементы массива вводятся вручную?
    Ответить с цитированием  
     

  3. #3  
    Новичок
    Регистрация
    26.05.2011
    Сообщений
    7
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях
    Да, вручную
    Ответить с цитированием  
     

  4. #4  
    Модератор Аватар для pingvin
    Регистрация
    11.02.2011
    Сообщений
    389
    Сказал(а) спасибо
    80
    Поблагодарили 75 раз(а) в 48 сообщениях
    Я Вам подскажу алгоритм.
    1. Спросить, сколько элементов в массиве
    2. Завести данный массив.
    3. Заполнить массив
    4. Найти минимальный элемент. Сравнить с другими. Если совпадение, то присвоить к переменной s, которая изначально равна нулю, добавить 1.
    5. Потом адрес минимального элемента +1. Пункт 4 пока не достигнет конца
    Последний раз редактировалось pingvin; 26.05.2011 в 19:35.
    Ответить с цитированием  
     

  5. #5  
    Новичок
    Регистрация
    26.05.2011
    Сообщений
    7
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях
    Ясно, спасибо Вам)
    Ответить с цитированием  
     

  6. #6  
    Профи Аватар для Dimon012
    Регистрация
    09.02.2011
    Адрес
    Владивосток
    Сообщений
    850
    Сказал(а) спасибо
    29
    Поблагодарили 130 раз(а) в 108 сообщениях
    Записей в блоге
    3
    Цитата Сообщение от pingvin Посмотреть сообщение
    4. Найти минимальный элемент. Сравнить с другими. Если совпадение, то присвоить к переменной s, которая изначально равна нулю, добавить 1.
    А если немного по другому? Зачем искать минимальный элемент, можно просто взять первый и проверить его на совпадения со всеми элементами массива, если совпадений больше чем 1 (элемент совпадает сам с собой) то s=s+1. Затем взять второй элемент и его точно так же проверить, получается простой цикл, точнее 2 вложенных цикла, внешний выбирает элементы последовательно, а внутренний проверяет на совпадения все элементы массива.
    Последний раз редактировалось Dimon012; 27.05.2011 в 03:25.
    Ответить с цитированием  
     

  7. #7  
    Модератор Аватар для pingvin
    Регистрация
    11.02.2011
    Сообщений
    389
    Сказал(а) спасибо
    80
    Поблагодарили 75 раз(а) в 48 сообщениях
    Это не работает на примере: 2 7 4 2 4 5 3 2 8 2 2 4 2.
    Двоек 5, а этот алгоритм посчитает их 25.
    И я допустил ошибку. Берём 0. Если есть два одинаковых, то s = s + 1.
    Ответить с цитированием  
     

  8. #8  
    Профи Аватар для Dimon012
    Регистрация
    09.02.2011
    Адрес
    Владивосток
    Сообщений
    850
    Сказал(а) спасибо
    29
    Поблагодарили 130 раз(а) в 108 сообщениях
    Записей в блоге
    3
    Нет все неверно! 1. надо сформировать новый массив, в который скопировать неповторяющиеся элементы первого массива, в порядке увеличения. 2. сравнивать элементы первого массива с элементаси второго массива на предмет совпадения и таким образом определить количество.
    Ответить с цитированием  
     

  9. #9  
    Профи Аватар для Dimon012
    Регистрация
    09.02.2011
    Адрес
    Владивосток
    Сообщений
    850
    Сказал(а) спасибо
    29
    Поблагодарили 130 раз(а) в 108 сообщениях
    Записей в блоге
    3
    Мое предыдущее сообщение было то же слегка неверно! Во вспомогательном массиве должны быть неповторяющиеся элементы без упорядочивания.
    Код :
    INPUT "Razmer massiva"; (k%)
    DIM M!(k%)
    DIM Vspom!(k%)
    FOR i = 1 TO k%
        PRINT "Vvedite alement nomer "; i; "  ";
        INPUT (M!(i))
    NEXT
    CLS
    PRINT "massiv"
    FOR i = 1 TO k%
        PRINT (M!(i)),
    NEXT
    jmax = 0
    FOR i = 1 TO k%
        r = 0
        IF jmax <> 0 THEN
            FOR j = 1 TO jmax
                IF (M!(i)) = Vspom!(j) THEN r = r + 1
            NEXT j
        ELSE
            jmax = jmax + 1
            Vspom!(jmax) = M!(i)
            r = 100
        END IF
        IF r = 0 THEN
            jmax = jmax + 1
            Vspom!(jmax) = M!(i)
        END IF
    NEXT i
    sovp% = 0
    FOR j = 1 TO jmax
        r = 0
        FOR i = 1 TO k%
            IF Vspom!(j) = M!(i) THEN
                r = r + 1
            END IF
        NEXT i
        IF r > 1 THEN sovp% = sovp% + r
    NEXT j
    PRINT
    PRINT "sovpadаuchih alementov "; sovp%
    Вот програмка, она на примере 2 7 4 2 4 5 3 2 8 2 2 4 2 дает 9 совпадающих элементов, отмечу, что по условию задачи надо считать совпадающие элементы а не число совпадений! И еще немного размышлений, в условии задачи не было оговорено, что элементы будут положительными и целыми.
    Последний раз редактировалось Dimon012; 29.05.2011 в 10:28.
    Ответить с цитированием  
     

  10. #10  
    Новичок
    Регистрация
    26.05.2011
    Сообщений
    7
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях
    Простите, а что значит символ %?
    Ответить с цитированием  
     

Страница 1 из 2 12 ПоследняяПоследняя
Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. помогите написать программу
    от Стамус в разделе QBasic
    Ответов: 5
    Последнее сообщение: 18.10.2012, 20:35
  2. Ответов: 2
    Последнее сообщение: 30.05.2011, 12:25
  3. Ответов: 2
    Последнее сообщение: 26.05.2011, 17:44
  4. Ответов: 3
    Последнее сообщение: 17.05.2011, 21:36
  5. Ответов: 3
    Последнее сообщение: 29.11.2010, 02:08
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •