Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 17.12.2012, 13:31   #11
FleXt
Пользователь
 
Регистрация: 01.12.2012
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Код:
Инициализировать "число уникальных" нулём
Для каждой строки,
  Инициализировать "флаг совпадения" ложью
  Для каждой ПРЕДЫДУЩЕЙ строки
    Если совпадает с текущей
    (т.е. одинаковая длина И 
    memcmp на (длина) _элементов_ - а не байт! - показывает совпадение),
      Установить "флаг совпадения" в истину
      покинуть цикл
  Если "флаг совпадения" - ложь (т.е. мы успешно перебрали предыдущие строки),
    Увеличить "число уникальных" на 1
Код:
 t=0; int p;
    for(i=0;i<s;i++)
       {           
        p=0;
        for(j=0;j<i;j++)
            if(b[i]==b[j]&&!memcmp(a[j],a[i],b[i]))
              p=1; break;
        if(!p) t++;      
       }
не совсем понял про длину
FleXt вне форума Ответить с цитированием
Старый 17.12.2012, 13:35   #12
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
не совсем понял про длину
b[i] у Вас - число элементов. memcmp() хочет на вход размер сравниваемых блоков в байтах. Один элемент типа int обычно занимает больше одного байта. Хорошо бы домножить на sizeof(int).
Abstraction вне форума Ответить с цитированием
Старый 17.12.2012, 13:42   #13
FleXt
Пользователь
 
Регистрация: 01.12.2012
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
b[i] у Вас - число элементов. memcmp() хочет на вход размер сравниваемых блоков в байтах. Один элемент типа int обычно занимает больше одного байта. Хорошо бы домножить на sizeof(int).
Код:
t=0; int p;
    for(i=0;i<s;i++)
       {
        p=0;
        for(j=0;j<i;j++)
            if(b[i]==b[j]&&!memcmp(a[j],a[i],sizeof(int)*b[i]))
             {
                 p=1; break;
             }
        if(!p) t++;
       }
с предложенным Вами примером, программа выдает результат 2, видимо все получилось) Спасибо Вам большое, что помогли разобраться
FleXt вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме от 7000 рублей в месяц



Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сканирования строк. Зная количество строк и первый элемент, это количество символов с троке. dimon9 Общие вопросы C/C++ 8 02.11.2012 21:40
Найти минимальный элемент среди всех элементов тех строк заданной матрицы, которые упорядочены по убыванию. KObotan Общие вопросы C/C++ 4 16.09.2012 13:54
В квадратной матрице необходимо определить количество строк состоящих из равных элементов poison777 Помощь студентам 3 15.03.2011 18:41
Найти количество строк, среднее арифметическое элементов которых меньше заданной величины Sergeo_89 Паскаль, Turbo Pascal, PascalABC.NET 3 05.12.2008 21:25


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Скидки на курсы GeekBrains 40%, выбирайте программу для себя