IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> Найти в массиве минимальный и максимальный элементы., И вывести последовательность значений из этого диапазона, не встречающ
Shmaniche
сообщение 26.05.2012 20:11
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 79
Пол: Мужской

Репутация: -  0  +


Есть одна программа на Паксале позволяющая это делать. Переписать на С++, но не моу найти где допустил ошибку. Мин. и макс. элементы ищет, а дальше нет. sad.gif

На Pascal:

program mass;
uses crt;
var Mass: array [1..100] of integer;
    i, N, j, Min, Max: integer;
 Flag, FlagOk: boolean;
begin
 
 clrscr;
 writeln('Введите размер массива');
 readln(N);
 
 for i:=1 to N do
 begin
  write('[', i,']= ');
  readln(Mass[i]);
 end;
 
 writeln;
 writeln('Данный одномерный массив чисел');
 for i:= 1 to N do
  write(Mass[i],' ');
 
 Flag := false;
 Min:= 1;
 Max:= 1;
 for i:=2 to N do
 begin
  if Mass[i] < Mass[Min] then  Min:=i;
  if Mass[i] > Mass[Max] then  Max:=i;
 end;
 writeln;
 writeln;
 writeln('Минимальный элемент массива: ', Mass[Min]);
 writeln('Максимальный элемент массива: ', Mass[Max]);
 Flag := false;
 writeln;
 
 for i:= Mass[Min]+1 to Mass[Max]-1 do
 begin
  FlagOk := true;
  for j:=1 to N do
   if Mass[j]=i then
   begin
    FlagOk := false;
    break;
   end;
   if (Flag = false) and (FlagOk) then
   begin
    Flag := true;
    writeln('Целые числа между мин. и макс. элементами, которых нет в массиве: ');
   end;
   if FlagOk then
    write(i,' ');
 end;
  if Flag = false then
   writeln('Целых чисел между элементами массива нет');
   readln; 
end.
 



На С++:

#include <stdio.h>
#include <conio.h> 
 
const int N = 5;
int main()
{     
 int 
 mass[N]={8, 6, 9, 2, 4,}; 
 int i, j, min, max, buffer; 
 bool FlagOk, Flag;
 
  printf("\n Ishodniy massiv: "); 
  for (int i=0; i<N; i++)
  { printf("%d. ", mass[i]); } 
 
  Flag=false; // Устанавливаем флаг на ложь.
  min=0; max=0; // Обнуляем минимальное и максимальное значения.
 
  /* Нахождение минимального и максимального элементов */
  for(i=1; i<N; i++) 
   { if(mass[i] < mass[min])  // Если следущий элемент меньше минимального, то...
      { min=i; } // назначаем его минимальным.
     if(mass[i] > mass[max])  // Если следущий элемент больше максимального, то...   
      { max=i; } // назначаем его минимальным.
   }
  printf("\n \n Min element = %d.", mass[min]); // Выводим минимальный элемент.
  printf("\n \n Max element = %d.", mass[max]); // Выводим максимальный элемент.
 
  /* Поиск целых чисел между мин. и макс. элементами, которых нет в массиве */
  Flag=false; // Отмечаем, что искомые числа пока не найдены.
  for (i=mass[min]+1; i<mass[max]-1; i++) /*  Т.к. мин. и макс. элементы по условию 
                                              не должны принадлежать промежутку, 
                                              то и цикл начинается с числа больше 
                                              минимального на 1 и заканчивается 
                                              числом меньшим максимального на 1.
                                           */
   { FlagOk=true; // Предполагать, что текущее целое число будет одним из искомых.
     for(j=1; j<N; j++)
      { if (mass[j]=i) /*  Проверяеть есть ли среди элементов данного массива элемент, 
                           равный предполагаемому. Если равный есть, то... 
                       */
       { FlagOk = false; // значит, что число не является искомым и...
         break; } // цикл проверки данного числа прекратить и перейти к следующему числу.         
       if ((Flag = false) && (FlagOk)) /* Если же равный элемент в массиве не был найден, 
                                          и такой элемент оказался первым найденным, тогда...
                                       */                                       
        { Flag = true; // Отмечается, что хотя бы одно число уже найдено.
        printf("\n \n Celye chisla meghdu min & max elem. kotoryh net v massive: "); } /* Ввыести
                                 целые числа между мин. и макс элементами, которых нет в массиве. */                                         
       if (FlagOk) // Если же равный элемент не был найден в данном массива, тогда...
        { printf(" %d.", i); } // вывести это число.
      }
   }
   if (Flag=false) // Если же ни одного искомого числа не было найдено, тогда...   
    { printf("\n \n Celye chisel megdu min. & max. elem. massiva net"); } /* вывести
                     сообщение, что чисел между мин. и макс.  элементами массива нет. */
  
 getch(); 
 return 0; 
}


Помогите пжста найти ошибку!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 1.08.2025 19:12
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"