Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2012, 11:04   #1
Александрq
Пользователь
 
Регистрация: 14.10.2012
Сообщений: 27
По умолчанию массив (Си)

Определить длину наибольшей последовательности одинаковых чисел в массиве А(50) и вывести на экран значение элементов, из которых она состоит, индексы начального и конечного элементов этой последовательности. Правильно программа работает? и как добавить ввод случайных значений в массив?
Код:
#include <stdio.h>
 
int max_seq_len(const int* a, int* sz) {
   const int* p, *i;
   int x = 0, y = 0;
   for(i = a; i != a + *sz; ) {
         for(p = i; *p == *i && p != a + *sz; *p++);
         if((p - i) > x) {
              x = p - i;
              y = i - a;
              i += x;
         } else
             *i++;
    }
    *sz = x + y;
    return y;
}
 
 
int main(void){
  int arr[] = { 40, 40, 40, 8, 4, 4, 4, 7, 7, 7, 7, 0, 0 };
  int p, i, size  = sizeof(arr) / sizeof(arr[0]);
 
  p = max_seq_len(arr, &size);
  printf("len seq: %d\n", size - p);
  for(i = p; i < size; i++)
       printf("%d  ", arr[i]);
  getchar();
  return 0;
}
Александрq вне форума Ответить с цитированием
Старый 29.11.2012, 11:34   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Правильно программа работает?
А почему Вы спрашиваете у форума, а не у компилятора? Скомпилируйте, посмотрите, что выводит; убедитесь, что индексы не выводятся, а вместо этого выводится длина, а после этого выводится много раз одно и то же... Вообще, доказать корректность такого кода проще, чем его написать.

Случайное значение - см. функцию rand().
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С# задан массив 5х5. сформировать массивы А и В. в массив А поместить элементы с четными индексами, в массив В с нечетны Koksa Помощь студентам 0 10.10.2011 11:26
Запись координат в массив в реал тайм, Как записать координаты в массив Dark19 Visual C++ 2 21.06.2011 18:45
Из массив А получить массив В, удвоив все нечётные элементы удвоены ( на Pascal) KARTER Помощь студентам 1 18.06.2011 19:58
Массив - Нужно написать массив и распечатать на экран с конца в начало(язык С++) econ Помощь студентам 1 29.05.2011 22:02