1. Пользуйтесь тегами кода. - [code] ... [/code] 2. Точно указывайте язык, название и версию компилятора (интерпретатора). 3. Название темы должно быть информативным.
В описании темы указываем язык!!!
Найти в массиве минимальный и максимальный элементы., И вывести последовательность значений из этого диапазона, не встречающ
Есть одна программа на Паксале позволяющая это делать. Переписать на С++, но не моу найти где допустил ошибку. Мин. и макс. элементы ищет, а дальше нет.
На 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;
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"); } /* вывести сообщение, что чисел между мин. и макс. элементами массива нет. */
Нет, не лучше! Не "улучшай" то, в чем не разобрался. Твой код будет врать, что не нашел чисел, после того, как напечатает часть из них (если не будет найдено ПОСЛЕДНЕЕ число в интервале - выведется сообщение. Запусти на данных: mass[N]={1, 3, 5, 8, 9}; и убедись), чтобы сделать диагностику "нет чисел, входящих в интервал" надо считать напечатанные числа.
Цитата
Ради спортивного интереса хотелось бы найти ошибку в коде выше
Это без меня, я не копаюсь в чужих кодах. Запускай отладчик и ищи, где начинает работать не так, как положено. Если уж ты берешься править чужое - значит, в работе отладчика точно сможешь разобраться