|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
14.12.2012, 09:56 | #1 (permalink) |
Member
Регистрация: 14.12.2012
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Кто-нибудь может помочь с решением?
1 Создать типизированный файл целых чисел. Записать в него с консоли последовательность целых чисел, конец последовательности (терминатор) – ноль, который не записывается в файл. Определить первое по порядку отрицательное и последнее положительное числа и их позиции в файле (нумерация данных в файле начинается с нуля). Предусмотреть случай, когда таких чисел в файле нет. Удалить из файла все числа, находящиеся между ними. 2 Создать текстовый файл, в который построчно записать прямоугольный массив massivnm, заполненный целыми случайными числами в диапазоне от v_min до v_max. Размеры массива n и m задать константами. Границы диапазона v_min и v_max задать с консоли. Определить второй максимальный и второй минимальный элементы в файле и поменять их местами. При чтении из файла считать размеры массива неизвестными. Определить их при чтении файла. Размеры создаваемых файлов считать заранее неизвестными и определять их при чтении файлов. При чтении из файла массивы не использовать. Можно использовать рабочие файлы. |
14.12.2012, 09:56 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Если хотите решить проблемы быстрее - посмотрите аналогичные темы Кто может помочь научиться электронике? Кто-нибудь слышал что-нибудь про радиозавод "Форманта"? |
15.12.2012, 02:09 | #3 (permalink) | |
С# - learn or die
Регистрация: 17.12.2011
Сообщений: 2,438
Записей в дневнике: 8
Сказал(а) спасибо: 21
Поблагодарили 49 раз(а) в 11 сообщениях
Репутация: 19701
|
Цитата:
Код:
uses crt; var f:file of integer; a,b,mx1,mx2,mn1,mn2,imx1,imx2,imn1,imn2,i,k1,k2,k:integer; begin //создание файла assign(f,'file'); rewrite(f); writeln('Введите в файл целые числа, окончание ввода 0:'); repeat read(a); if a<>0 then write(f,a); until a=0; clrscr; //вывод на экран writeln('Содержание исходного файла:'); reset(f); //если нет 2 элементов if filesize(f)<2 then begin writeln('Вы ввели менее двух чисел, поиск не возможен'); close(f); exit; end; //если есть while not eof(f) do begin read(f,a); write(a,' '); end; writeln; seek(f,0); //в начало файла read(f,a);//первое число seek(f,1); read(f,b); //второе if a>b then //выбираем первые мин и макс begin mx1:=a; imx1:=0; mx2:=b; imx2:=1; mn1:=b; imn1:=1; mn2:=a; imn2:=0; end else begin mx1:=b; imx1:=1; mx2:=a; imx2:=0; mn1:=a; imn1:=0; mn2:=b; imn2:=1; end; //если только 2 элемента, удалять нечего if filesize(f)=2 then begin writeln('Второе максимальное=',mx2,' его позиция=',imx2); writeln('Второе минимальное =',mn2,' его позиция=',imn2); writeln('Элементов для удаления нет'); close(f); exit; end; // если больше for i:=2 to filesize(f)-1 do //от третьего до последнего begin seek(f,i); read(f,a); if a>mx1 then //первый макс begin imx2:=imx1;//старый первый удет вторым mx2:=mx1; imx1:=i; mx1:=a; //первй новый end else if a>mx2 then//если второй begin imx2:=i; mx2:=a;//он сменится, первый нет end; if a<mn1 then //так же с минимальными begin imn2:=imn1; mn2:=mn1; imn1:=i; mn1:=a; end else if a<mn2 then begin imn2:=i; mn2:=a; end; end; writeln('Первый максимальный=',mx1,' второй=',mx2,' его индекс=',imx2); writeln('Первый минимальный =',mn1,' второй=',mn2,' его индекс=',imn2); if imx2<imn2 then //если макс меньше, поменяем begin a:=imx2; imx2:=imn2; imn2:=a; end; writeln('Удаляем элементы с номерами ',imn2+2,'...',imx2);//номер на 1 больше индекса if imx2-imx1<=2 then //если они рядом begin write('Элементов для удаления нет'); close(f); exit; end; k:=0; for i:=imx2 to filesize(f)-1 do//от 2 макс до конца begin seek(f,i); read(f,a); k:=k+1; seek(f,imn2+k);//все поднимем вверх за 2 мин write(f,a); end; seek(f,filesize(f)-(imx2-imn2-1));//отступаем от конца на кол. удаляемых элементов truncate(f);//обрезаем пустое seek(f,0); //вывод результата writeln('Удаление элементов между вторым минимальным и вторым максимальным:'); while not eof(f) do begin read(f,a); write(a,' '); end; close(f); end. |
|
15.12.2012, 02:30 | #4 (permalink) | |
С# - learn or die
Регистрация: 17.12.2011
Сообщений: 2,438
Записей в дневнике: 8
Сказал(а) спасибо: 21
Поблагодарили 49 раз(а) в 11 сообщениях
Репутация: 19701
|
Цитата:
Код:
uses crt; const n=5; m=7; var a:array[1..n,1..m] of integer; vmin,vmax,i,j,x,y,mx,mn,imx,jmx,imn,jmn,z:integer; f:text; begin clrscr; randomize; assign(f,'123.txt'); rewrite(f); repeat writeln('Введите границы диапaзона чисел:'); readln(vmin,vmax); until vmin<vmax; {создаем файл} for i:=1 to n*m do begin x:=vmin+random(vmax-vmin+1); write(f,' ',x);{пишем числа через пробел} if (i mod m=0)and(i<n*m) then writeln(f);{новая строка} end; writeln('Исходный массив:'); reset(f); y:=0;{определим кол. чисел в 1 строке} while not eoln(f) do begin read(f,x); y:=y+1; end; close(f); reset(f); {прочитаем всю матрицу} x:=0; while not eof(f) do begin x:=x+1; for j:=1 to y do begin read(f,a[x,j]); write(a[x,j]:5); end; writeln end; close(f); writeln; {найдем мин и макс с координатами} mn:=a[1,1];imn:=1;jmn:=1; mx:=a[1,1];imx:=1;jmx:=1; for i:=1 to x do for j:=1 to y do begin if a[i,j]<mn then begin mn:=a[i,j]; imn:=i; jmn:=j; end; if a[i,j]>mx then begin mx:=a[i,j]; imx:=i; jmx:=j; end; end; writeln('Минимальный элемент [',imn,',',jmn,']=',mn); writeln('Максимальный элемент [',imx,',',jmx,']=',mx); writeln; {обменяем их и выведем новый массив} z:=a[imn,jmn];a[imn,jmn]:=a[imx,jmx];a[imx,jmx]:=z; writeln('Обмен минимального и максимального:'); for i:=1 to x do begin for j:=1 to y do write(a[i,j]:5); writeln; end; readln end. |
|
20.12.2012, 09:49 | #5 (permalink) |
Новичок
Регистрация: 19.12.2012
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Вот в первой программе, можете показать где именно идет удаление, и что то не очень понимаю как изменить чтобы удалялось не между мин2 и мах2 а наоборот за ними))
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
24.12.2012, 16:49 | #6 (permalink) |
Member
Регистрация: 14.12.2012
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Angela, спасибо огромное за помощь))
Только в первом задании не нужно было искать второй макс. и второй мин. - это нужно было во 2ой задачи. Я вроде переделал, вторая работает отлично, а вот в первой у меня не удаляет между макс. и мин. все равно... Может подскажете? все-таки ваш код)) |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|