3 / 3 / 1
Регистрация: 10.12.2008
Сообщений: 46
|
||||||
1 | ||||||
Исправить программу19.12.2008, 03:16. Показов 1080. Ответов 8
Метки нет Все метки)
(
Здравствуйте) У меня проблема с одной из программ.. Есть код программы, всё работает как надо, почти как надо.. Ввод значений массива осуществляется рандомно, а нужно чтобы осуществлялся с консоли или из файла (по выбору пользователя).. В принципе дело пустяковое, но заметил только сейчас, а нужно срочно.. Действительно срочно..
0
|
19.12.2008, 03:16 | |
19.12.2008, 03:16 | |
Ответы с готовыми решениями:
8
Исправить программу Исправить программу Исправить программу |
Почетный модератор
![]() 64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
|
|
19.12.2008, 08:42 | 2 |
Вот переделал немного. Сделал ввод с консоли, так удобнее, можно разные варианты вводить, а файл каждый раз переписывать долго.
Код
program odnomerniymassiv; uses crt; const n=15; var a:array[1..n] of real; i,imax,imin,j:integer; sm,pr,min,max,x:real; begin clrscr; writeln('Vvedite ',n,' elementov massiva:'); for i:=1 to n do read(a[i]); {здесь вводите числа в строку через пробел} readln; clrscr; {очищаете экран и выводите массив уже в отформатированном виде} writeln('Ishodnyj massiv:'); sm:=0; max:=a[1];min:=a[1];imax:=1;imin:=1; for i:=1 to n do begin if a[i]>0 then sm:=sm+a[i]; if a[i]>0 then sm:=sm+a[i]; if abs(a[i])<min then begin min:=abs(a[i]); imin:=i; end; if abs(a[i])>max then begin max:=abs(a[i]); imax:=i; end; write(a[i]:6:2); end; writeln; writeln('Summa polozitelnyh=',sm:0:2); writeln('Nomer maximalnogo=',imax,' Nomer minimalnogo=',imin); pr:=1.0; if imin<imax then begin for i:=imin+1 to imax-1 do pr:=pr*a[i]; end else if imax<imin then begin for i:=imax+1 to imin-1 do pr:=pr*a[i]; end; writeln('Proizvedenie=',pr:0:2); for i:=1 to n-1 do for j:=i+1 to n do if a[i]<a[j] then begin x:=a[i]; a[i]:=a[j]; a[j]:=x; end; writeln; writeln('Otsortirovannyj massiv:'); for i:=1 to n do write(a[i]:6:2); readln end.
1
|
3 / 3 / 1
Регистрация: 10.12.2008
Сообщений: 46
|
|
20.12.2008, 20:27 [ТС] | 3 |
Значит файл совсем никак не сделать? Я пытался, но у меня не получилось.. Выбор появлялся, но он сильно глючит, а т.е. постоянно после него повторялся запрос.. Накосячил(
0
|
Почетный модератор
![]() 64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
|
|
20.12.2008, 20:33 | 4 |
Почему нельзя файл, я этого не говорил, сейчас сделаем вывод из файла.
1
|
Почетный модератор
![]() 64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
|
|
20.12.2008, 20:50 | 5 |
Вот, пожалуйста с файлом. Образец файла прилагаю.
Код
program odnomerniymassiv; uses crt; var a:array[1..100] of real; n,i,imax,imin,j:integer; sm,pr,min,max,x:real; f:text; //файловая переменная begin clrscr; assign(f,'massiv.txt'); reset(f); //открываем файл для чтения readln(f,n); //читаем первую строку, где записан размер массива for i:=1 to n do read(f,a[i]); //читаем элементы массива. Числа вещественные, поэтому в файле надо писать так 2.36 -1.23, запятые нельзя, пробелы обязательно. writeln('Ishodnyj massiv:'); sm:=0; max:=a[1];min:=a[1];imax:=1;imin:=1; for i:=1 to n do begin if a[i]>0 then sm:=sm+a[i]; if a[i]>0 then sm:=sm+a[i]; if abs(a[i])<min then begin min:=abs(a[i]); imin:=i; end; if abs(a[i])>max then begin max:=abs(a[i]); imax:=i; end; write(a[i]:6:2); end; writeln; writeln('Summa polozitelnyh=',sm:0:2); writeln('Nomer maximalnogo=',imax,' Nomer minimalnogo=',imin); pr:=1.0; if imin<imax then begin for i:=imin+1 to imax-1 do pr:=pr*a[i]; end else if imax<imin then begin for i:=imax+1 to imin-1 do pr:=pr*a[i]; end; writeln('Proizvedenie=',pr:0:2); for i:=1 to n-1 do for j:=i+1 to n do if a[i]<a[j] then begin x:=a[i]; a[i]:=a[j]; a[j]:=x; end; writeln; writeln('Otsortirovannyj massiv:'); for i:=1 to n do write(a[i]:6:2); readln end.
1
|
Почетный модератор
![]() 64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
|
|
20.12.2008, 21:13 | 6 |
Может я Вас неправильно понял и у Вас проблема с организацией ввода данных. Вот я написал вариант, посмотрите.
Код
program odnomerniymassiv; uses crt; var a:array[1..100] of real; n,i,imax,imin,j:integer; sm,pr,min,max,x:real; f:text; c:char; begin clrscr; repeat writeln('Vybor sposoba vvoda dannyh: 1-random; 2-s konsoli; 3-iz faila'); c:=readkey; case c of '1': begin write('n=');readln(n); for i:=1 to n do a[i]:=10*random-4; end; '2': begin write('n=');readln(n); writeln('Vvedite ',n,' elementov massiva:'); for i:=1 to n do read(a[i]); readln; end; '3': begin assign(f,'massiv.txt'); reset(f); readln(f,n); for i:=1 to n do read(f,a[i]); end; end; until c in ['1'..'3']; clrscr; writeln('Ishodnyj massiv:'); sm:=0; max:=a[1];min:=a[1];imax:=1;imin:=1; for i:=1 to n do begin if a[i]>0 then sm:=sm+a[i]; if a[i]>0 then sm:=sm+a[i]; if abs(a[i])<min then begin min:=abs(a[i]); imin:=i; end; if abs(a[i])>max then begin max:=abs(a[i]); imax:=i; end; write(a[i]:6:2); end; writeln; writeln('Summa polozitelnyh=',sm:0:2); writeln('Nomer maximalnogo=',imax,' Nomer minimalnogo=',imin); pr:=1.0; if imin<imax then begin for i:=imin+1 to imax-1 do pr:=pr*a[i]; end else if imax<imin then begin for i:=imax+1 to imin-1 do pr:=pr*a[i]; end; writeln('Proizvedenie=',pr:0:2); for i:=1 to n-1 do for j:=i+1 to n do if a[i]<a[j] then begin x:=a[i]; a[i]:=a[j]; a[j]:=x; end; writeln; writeln('Otsortirovannyj massiv:'); for i:=1 to n do write(a[i]:6:2); readln end.
1
|
3 / 3 / 1
Регистрация: 10.12.2008
Сообщений: 46
|
||||||
24.12.2008, 02:54 [ТС] | 7 | |||||
Puporev, спасибо-спасибо, это оно, последняя версия)
![]() Ой, а Вас не затруднить сделать тоже самое вот с этой программулей (с консоли или из файла (по выбору пользователя)):
0
|
Почетный модератор
![]() 64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
|
|
24.12.2008, 10:56 | 8 |
Меня затруднит. Нет ничего хуже ковыряться в чужом коде, не понимая наполовину что он делает. Наверное Вам будет проще вставить в свой код несколько дополнительных строчек, списав их с той программы, только в исходном файле должен быть двумерный массив, хотя если Вы его напишете в строку, ничего не изменится, вызвать только надо в две строки
readln(f1,n); for i:=1 to n do for j:=1 to n do read(f1,a[i,j]); По-моему Вы ищете первых два максимальных. Если числа будут вещественные, Вы можете никогда их не найти, может сделать тип integer? Добавлено через 19 минут 53 секунды Еще не понял, если хотите сделать ввод из файла, зачем Вы обратно записываете матрицу в файл? Вообще не понял. Вот учтите все это, переделайте программу, если что не получится, поправлю.
1
|
Почетный модератор
![]() 64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
|
|
24.12.2008, 11:53 | 9 |
Слушай, друг! Немного помаялся, что-то получилось. Образец файла прилагаю.
Код
program dvumassiv; uses crt; const nmax=10; var a:array[1..nmax,1..nmax] of real; b:array[1..nmax*nmax]of real; n,m,i,j,k,f:integer; x,mx2:real; h,g:text; c:char; begin clrscr; repeat writeln('Vybor sposoba vvoda dannyh: 1-random; 2-s konsoli; 3-iz faila'); c:=readkey; case c of '1': begin repeat write('Vvedite kolichestvo strok n='); readln(n); if n>10 then writeln('Prevyshen dopustimyj razmer matricy. Povtorite vvod!'); until(n>0)and(n<=10); repeat write('Vvedite kolichestvo stolbcov m='); readln(m); if m>10 then writeln('Prevyshen dopustimyj razmer matricy. Povtorite vvod!'); until(m>0)and(m<=10); for i:=1 to n do for j:=1 to m do a[i,j]:=10*random-4; end; '2': begin repeat write('Vvedite kolichestvo strok n='); readln(n); if n>10 then writeln('Prevyshen dopustimyj razmer matricy. Povtorite vvod!'); until(n>0)and(n<=10); repeat write('Vvedite kolichestvo stolbcov m='); readln(m); if m>10 then writeln('Prevyshen dopustimyj razmer matricy. Povtorite vvod!'); until(m>0)and(m<=10); writeln('Vvedite ',n*m,' elementov matricy:'); for i:=1 to n do for j:=1 to m do readln(a[i,j]); end; '3': begin assign(h,'massiv2.txt'); reset(h); readln(h,n,m); for i:=1 to n do for j:=1 to m do read(h,a[i,j]); end; end; until c in ['1'..'3']; clrscr; assign(g,'file1.txt'); rewrite(g); writeln('Matrica:'); writeln(g,'Matrica:'); for i:=1 to n do begin for j:=1 to m do begin write(a[i,j]:6:2); write(g,a[i,j]:6:2); end; writeln; writeln(g,''); end; writeln; writeln(g,''); k:=0; for i:=1 to n do begin for j:=1 to m do begin k:=k+1; b[k]:=a[i,j]; end; end; for i:=1 to k-1 do for j:=i+1 to k do if b[i]<b[j] then begin x:=b[i]; b[i]:=b[j]; b[j]:=x; end; i:=2;mx2:=0;f:=0; while i<=k do if b[i]=b[i-1] then begin mx2:=b[i]; f:=1; break; end else i:=i+1; if f=1 then begin writeln('Maksimalnoe iz chisel, bolee 1 raza=',mx2:0:2); writeln(g,'Maksimalnoe iz chisel, bolee 1 raza=',mx2:0:2); end else begin writeln('Takogo chisla net!'); writeln(g,'Takogo chisla net!'); end; close(g); readln end. ---------
1
|
24.12.2008, 11:53 | |
24.12.2008, 11:53 | |
Помогаю со студенческими работами здесь
9
Исправить Программу Исправить программу Pascal Repeat (исправить программу) Помогите исправить программу Рекурсия. исправить программу Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
![]() |
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Отключение отслеживания файла, занесенного в .gitignore в Git
hw_wired 10.02.2025
Git помогает следить за изменениями в проекте, но иногда требуется исключить определенные файлы из системы контроля версий. Это могут быть конфигурационные файлы с локальными настройками, временные. . .
|
Что такое use strict в JavaScript
hw_wired 10.02.2025
Директива use strict - способ перевода JavaScript-кода в строгий режим работы, который делает язык более безопасным и предсказуемым. Она появилась в ECMAScript 5 как ответ на многочисленные проблемы,. . .
|
Как в jQuery проверить, что элемент скрыт
hw_wired 10.02.2025
jQuery предоставляет несколько эффективных способов определить, скрыт элемент или отображается на странице. Самый простой метод использует специальные селекторы :hidden и :visible. Селектор :hidden. . .
|
Как проверить (check out) ветку Git в удаленном репозитории
hw_wired 10.02.2025
Проверка удаленной ветки в Git требует понимания нескольких базовых концепций и точного выполнения определенной последовательности действий. Для начала необходимо получить актуальную информацию о. . .
|
chucknorris в HTML и другие обозначения цветов
hw_wired 10.02.2025
HTML, как основной язык разметки веб-страниц, прошел длинный путь развития в плане работы с цветами. На заре развития веб-технологий разработчики могли использовать только базовый набор из 16. . .
|
Стек и куча: отличия и назначение
hw_wired 10.02.2025
Управление памятью - ключевой элемент работы любой программы. В современных языках программирования память делится на две основные области: стек и кучу. Каждая из них обладает уникальными. . .
|
Комментарии в JSON
hw_wired 10.02.2025
JSON - текстовый формат обмена данными, построенный на основе синтаксиса JavaScript. Этот формат отличается простотой, читаемостью и широкой поддержкой во всех современных языках программирования. . . .
|
Перезаписываем локальные файлы с помощью git pull
hw_wired 10.02.2025
Git pull - незаменимая команда для синхронизации локального репозитория с удаленным. При работе над проектом в команде разработчиков часто возникает необходимость получить актуальные изменения,. . .
|
Оператор --> в C++
hw_wired 10.02.2025
Оператор --> (называемый "spaceship operator" или оператор космического корабля) - важное нововведение в стандарте C++20, упрощающее реализацию операций сравнения в пользовательских типах данных. . . .
|
Отмена git add до коммита
hw_wired 10.02.2025
Git предлагает несколько методов для отмены индексации файлов перед созданием коммита. Разработчики часто сталкиваются с ситуацией, когда нужно убрать файлы из индекса, не теряя внесенные изменения в. . .
|