3 / 3 / 1
Регистрация: 10.12.2008
Сообщений: 46
1

Исправить программу

19.12.2008, 03:16. Показов 1080. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте) У меня проблема с одной из программ.. Есть код программы, всё работает как надо, почти как надо.. Ввод значений массива осуществляется рандомно, а нужно чтобы осуществлялся с консоли или из файла (по выбору пользователя).. В принципе дело пустяковое, но заметил только сейчас, а нужно срочно.. Действительно срочно..
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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;
randomize;
writeln('Ishodnyj massiv:');
sm:=0; max:=0;min:=100;imax:=1;imin:=1;
for i:=1 to n do
begin
a[i]:=10*random-4;
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.
0
19.12.2008, 03:16
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.12.2008, 03:16
Ответы с готовыми решениями:

Исправить программу
program file_stipendiya_n23; uses crt; type fam=record f:string end; note=record a:array...

Исправить программу
Что здесь не так? uses crt; var S,a,x,: real, i:integer; begin readln(eps); S=0; a=x; i=2...

Исправить программу
исправьте код пожалуйста) Program ban; Const i = 1; n = 5; Var a:array of integer; min,j:integer; begin while i&lt;=n do...

8
Почетный модератор
 Аватар для Puporev
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
Почетный модератор
 Аватар для Puporev
64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
20.12.2008, 20:33 4
Почему нельзя файл, я этого не говорил, сейчас сделаем вывод из файла.
1
Почетный модератор
 Аватар для Puporev
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.
Вложения
Тип файла: txt massiv.txt (85 байт, 46 просмотров)
1
Почетный модератор
 Аватар для Puporev
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, спасибо-спасибо, это оно, последняя версия)

Ой, а Вас не затруднить сделать тоже самое вот с этой программулей (с консоли или из файла (по выбору пользователя)):
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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;
    g:text;
begin
clrscr;
assign(g,'file1.txt');
rewrite(g);
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
read(a[i,j]);
readln;
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;
clrscr;
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,'');
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);
   readln;
end
else
begin
   writeln('Takogo chisla net!');
   writeln(g,'Takogo chisla net!');
end;
readln;
close(g);
end.
0
Почетный модератор
 Аватар для Puporev
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
Почетный модератор
 Аватар для Puporev
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.
---------
Вложения
Тип файла: txt massiv2.txt (88 байт, 20 просмотров)
1
24.12.2008, 11:53
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.12.2008, 11:53
Помогаю со студенческими работами здесь

Исправить Программу
Дано целое число K и набор ненулевых целых чисел; признак его завершения — число 0. Вывести номер первого числа в наборе, большего K. Если...

Исправить программу Pascal
Составить программу для вычисления суммы ряда (с точностью до ε = 10-5 ) S = 1− 1/22 + 1/32 − 1/42 +...

Repeat (исправить программу)
Помогите пожалуйста доделать программу до конца, а то я уже 3 часа туплю чё-то:( Нужно из всей последовательности выбрать и посчитать...

Помогите исправить программу
Найти предел функции с точностью до е f1731.jpg-воть предел... программу ужо делал но преподователь утверждает что неправильно но...

Рекурсия. исправить программу
Задание: Вычислить значения сумм ряда s=x*sin(pi/4)+x*x*sin(2*pi/4)+...exp(x)*ln(n)*sin(n*pi/4) при x=0.1 для 15-ти элементов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Отключение отслеживания файла, занесенного в .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 предлагает несколько методов для отмены индексации файлов перед созданием коммита. Разработчики часто сталкиваются с ситуацией, когда нужно убрать файлы из индекса, не теряя внесенные изменения в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru