Serty Опубликовано 21 ноября, 2011 Жалоба Поделиться Опубликовано 21 ноября, 2011 Вот программа... Мне надо, кнопку справки убрать и поставить вместо неё правила перевода чисел из 10 в 16 (и обратно). И кнопку настройки переименовать во время... Помогите, пожалуйста И, чтобы программа выдавала наугад не только целые числа, но и дробные. Помогите, пожалуйста! Очень надо. Заранее благодарен!=)) Программа.rar Программа.rar Ссылка на комментарий Поделиться на другие сайты Поделиться
AntonyDed Опубликовано 21 ноября, 2011 Жалоба Поделиться Опубликовано 21 ноября, 2011 Спасибо за помощь ))) Еще есть две задачки... массивы нам плохо объясняли, а самому понять так быстро сложно. а задачки нужно в кратчайшие сроки сделать.. помогите. 1)Найти произведение всех элементов массива вещественных чисел, меньших заданного числа. Размерность массива –10. Заполнение массива осуществить случайными числами от 50 до 100. Составить алгоритм 2)Дан целочисленный массив А[1..4, 1..5]. Требуется преобразовать матрицу: поэлементно вы-честь последнюю строку из всех строк, кроме последней. Составить алгоритм Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 22 ноября, 2011 Жалоба Поделиться Опубликовано 22 ноября, 2011 (изменено) AntonyDed Учебников по Паскалю - как песка на пляже. И наверняка лучших, чем объяснения вашего преподавателя. Первая программка: var a:array[1..10]of real; i:integer;begin randomize; for i:=1 to 10 do a[i]:=50*(1+random); for i:=1 to 10 do write(a[i]:8:3); readlnend. Вторая программка: var a:array[1..4,1..5]of integer; i,j:integer;begin for i:=1 to 4 do begin write('Enter the elements of string ',i,': '); for j:=1 to 5 do read(a[i,j]) end; writeln;for i:=1 to 4 do begin for j:=1 to 5 do write(a[i,j]:8); writeln end; readln; writeln; for i:=1 to 3 do for j:=1 to 5 do a[i,j]:=a[i,j]-a[4,j];for i:=1 to 4 do begin for j:=1 to 5 do write(a[i,j]:8); writeln end; readlnend. При вводе элементы строк разделяются пробелами, ввод строки завершается нажатием Enter. P.S. Стоп, пропустил "меньших заданного числа". В конце решения всегда полезно перечитать условие ;) var a:array[1..10]of real; i:integer; p,c:real; b:boolean; begin write('c ? '); readln©;randomize; for i:=1 to 10 do a[i]:=50*(1+random); for i:=1 to 10 do write(a[i]:8:3); writeln; writeln;p:=1; b:=false; for i:=1 to 10 do if a[i]<c then begin p:=p*a[i]; b:=true end;if b then writeln(p) else writeln('There is not any number less than c'); readlnend. Изменено 22 ноября, 2011 пользователем Тролль 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
AntonyDed Опубликовано 22 ноября, 2011 Жалоба Поделиться Опубликовано 22 ноября, 2011 AntonyDed Учебников по Паскалю - как песка на пляже. И наверняка лучших, чем объяснения вашего преподавателя. Первая программка: var a:array[1..10]of real; i:integer;begin randomize; for i:=1 to 10 do a[i]:=50*(1+random); for i:=1 to 10 do write(a[i]:8:3); readlnend. Вторая программка: var a:array[1..4,1..5]of integer; i,j:integer;begin for i:=1 to 4 do begin write('Enter the elements of string ',i,': '); for j:=1 to 5 do read(a[i,j]) end; writeln;for i:=1 to 4 do begin for j:=1 to 5 do write(a[i,j]:8); writeln end; readln; writeln; for i:=1 to 3 do for j:=1 to 5 do a[i,j]:=a[i,j]-a[4,j];for i:=1 to 4 do begin for j:=1 to 5 do write(a[i,j]:8); writeln end; readlnend. При вводе элементы строк разделяются пробелами, ввод строки завершается нажатием Enter. P.S. Стоп, пропустил "меньших заданного числа". В конце решения всегда полезно перечитать условие ;) var a:array[1..10]of real; i:integer; p,c:real; b:boolean; begin write('c ? '); readln©;randomize; for i:=1 to 10 do a[i]:=50*(1+random); for i:=1 to 10 do write(a[i]:8:3); writeln; writeln;p:=1; b:=false; for i:=1 to 10 do if a[i]<c then begin p:=p*a[i]; b:=true end;if b then writeln(p) else writeln('There is not any number less than c'); readlnend. Ой-ой. Спасибо за помощь в решении задач в паскале. Я, конечно, понимаю, что выгляжу как ленивый студент, которому неохота делать задачки самому, но просто читая учебники паскаля я мало что понимаю, а преподаватель просто напросто ничего не объясняет, а задачки нужно решать в кратчайшие сроки, да и при этом составлять алгоритмы. А когда объясняют, то я понимаю намного лучше. Вы бы не могли немного объяснить по задачам? var a:array[1..10]of real; i:integer; p,c:real; b:boolean; begin write('c ? '); readln©;randomize; for i:=1 to 10 do a[i]:=50*(1+random); for i:=1 to 10 do write(a[i]:8:3); writeln; writeln;p:=1; b:=false; for i:=1 to 10 do if a[i]<c then begin p:=p*a[i]; b:=true end;if b then writeln(p) else writeln('There is not any number less than c'); readlnend. Как я понял, сначала заполняется массив числами от 50 до 100. Затем мы вводим число и происходит вычисление произведения всех чисел меньших указанного? Если число меньше хотя бы одно числа из массива, то на экран выводится, тчо нет чисел, меньших заданного? 2). var a:array[1..4,1..5]of integer; i,j:integer;begin for i:=1 to 4 do begin write('Enter the elements of string ',i,': '); for j:=1 to 5 do read(a[i,j]) end; writeln;for i:=1 to 4 do begin for j:=1 to 5 do write(a[i,j]:8); writeln end; readln; writeln; for i:=1 to 3 do for j:=1 to 5 do a[i,j]:=a[i,j]-a[4,j];for i:=1 to 4 do begin for j:=1 to 5 do write(a[i,j]:8); writeln end; readlnend. Какой оператор или что-то еще в данном коде отвечает за то, чтобы после введения данных каждой строки на экран снова выводилась подсказка о введении строки, но у же второй? Как вы сделали так, чтобы не повторять операторы writeln, а они сами автоматически появлялись... блин не могу объяснить. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 22 ноября, 2011 Жалоба Поделиться Опубликовано 22 ноября, 2011 AntonyDed Как я понял, сначала заполняется массив числами от 50 до 100. Затем мы вводим число и происходит вычисление произведения всех чисел меньших указанного? Если число меньше хотя бы одно числа из массива, то на экран выводится, тчо нет чисел, меньших заданного?Именно так. Чтобы узнать, умножали ли мы хоть один раз, введена булевская переменная с начальным значением false. Если мы хоть один раз умножали, она получает значение true, таким оно и останется. Какой оператор или что-то еще в данном коде отвечает за то, чтобы после введения данных каждой строки на экран снова выводилась подсказка о введении строки, но у же второй? Как вы сделали так, чтобы не повторять операторы writeln, а они сами автоматически появлялись.. for i:=1 to 4 do begin write('Enter the elements of string ',i,': '); for j:=1 to 5 do read(a[i,j]) end; Цикл по i перебирает номера строк. Для каждого номера строки сначала выводится приглашение к вводу ее элементов, а затем цикл по вводу значений этих элементов, в нем вызывается пять раз read с номером очередного элемента. При выводе - аналогично for i:=1 to 4 do begin for j:=1 to 5 do write(a[i,j]:8); writeln end; в цикле по i перебираются номера строк. Для каждого номера строки сначала циклом с параметром j выводятся значения элементов строки оператором write, который не переводит строку после вывода значения каждого элемента (этим он и отличается от writeln), а затем вызывается оператор writeln, он и переводит строку после вывода всех ее элементов. Вся суть - в begin ... end, которые объединяют внутренний цикл по элементам в строке и то, что надо делать после его завершения. Суть программирования - разбивание на блоки, у каждого из которых своя подзадача, которые выполняются друг после друга или вкладываются по нескольку в объемлющий блок. Разделяй и властвуй. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
2mbler Опубликовано 23 ноября, 2011 Жалоба Поделиться Опубликовано 23 ноября, 2011 Нужно решение таковой задачки. Очень прошу помочь, мозгов не хватает на решение задачи. TurboPascal Дана матрица mxn. Найти среднее арифметическое каждой строки и поменять его с минимальным значением каждой строки с указанием индексов. Создать новый одномерный массив состоящий из средних арифметических каждой строки и отсортированный по возрастанию. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 23 ноября, 2011 Жалоба Поделиться Опубликовано 23 ноября, 2011 (изменено) 2mbler Неясно, зачем писать разноцветными нестандартными шрифтами. Мешает читать. "Найти среднее арифметическое каждой строки и поменять его с минимальным значением каждой строки" невозможно в принципе. Среднему арифметическому нельзя произвольно присвоить какое-либо значение. Можно только заменить прежний минимальный элемент на среднее арифметическое этой строки до замены. И неясно, о каком среднем арифметическом идет речь дальше для "нового массива". Вообще-то такое задание надо возвращать на доработку. var a:array[1..20,1..20]of real; b:array[1..20]of real; s:real; i,j,jm,m,n:integer;beginwrite('Dimensions of the matrix: '); readln(m,n); writeln;for i:=1 to m do begin write('Row ',i,': '); for j:=1 to n do read(a[i,j]); readln end; writeln;for i:=1 to m do begin for j:=1 to n do write(a[i,j]:8:2); writeln end; writeln;for i:=1 to m do begin s:=0; for j:=1 to n do s:=a[i,j]+s; s:=s/n; b[i]:=s; jm:=1; for j:=1 to n do if a[i,j]<a[i,jm] then jm:=j; writeln('Minimum in the row ',i:2,' is by j=',jm); a[i,jm]:=s end; writeln;for i:=1 to m do begin for j:=1 to n do write(a[i,j]:8:2); writeln end; writeln; for i:=1 to m-1 do for j:=1 to m-i do begin s:=b[j]; b[j]:=b[j+1]; b[j+1]:=s end; for i:=1 to m do write(b[i]:8:2); writeln; readln end. При вводе элементы строк разделяются пробелами, ввод строки завершается нажатием Enter. Изменено 23 ноября, 2011 пользователем Тролль 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
2mbler Опубликовано 24 ноября, 2011 Жалоба Поделиться Опубликовано 24 ноября, 2011 Извините, за шрифт и за путаницу со средним арифметическим... Вы совершенно верно сказали) Нужно заменить минимальный элемент каждой строки на среднее арифметическое этой же сроки. А вообщем-то сейчас покажу листинг как я делал, но там ошибки есть и их надо исправить, и я не пойму как program matrix;uses crt;var a:array [1..10, 1..10] of integer;s:array [1..10] of integer;i,j,r,k,d,b,c,min,t:integer;beginclrscr;write('Введите количество строк'); read(n);write('Введите количество столбцов'); readln(m)writeln ('Введите матрицу:');for i:=1 to n dofor j:=1 to m do begin gotoxy (j*5+10,i+5); readln (a[i,j]); end;for i:=1 to n do begin for j:=1 to m do begin k:=k+a[i,j]; end; c:=k div n; min:=c; s[i]:=c; k:=0;{if s[i]<s[i+1] then begint:=s[i];s[i]:=s[i+1];s[i+1]:=t;}gotoxy (i*1, j*4+20);writeln (s[i]:5:0);end;{ end;}for i:=1 to n dofor j:=1 to m do beginif min=a[i,j] then b:=i;if min=a[i,j] then d:=j;{writeln ('Koordinaty', i,'-go minimuma', b, d);}end;readkey;end. она даже не компилируется здесь есть очень приличные ошибки Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 24 ноября, 2011 Жалоба Поделиться Опубликовано 24 ноября, 2011 2mbler Что не компилируется, это как раз мелочи - это ошибки, которые может изловить даже компилятор. Читай сообщения компилятора и поправляй... Ну, например, переменные n и m у тебя не объявлены, компилятор об этом сообщает, ну так и объяви их. Но ошибки в логике компиляторы не ловят. С ними хуже - почему, например, у тебя все числа целые, ясно же, что среднее арифметическое обычно целым не будет, да и в условии нет ограничения целыми. Со строками и столбцами у тебя уже при вводе путаница. Ну а начиная со строки c:=k div n; идет что-то совсем бессвязное. Такое впечатление, что писалось кусочками в надежде потом их состыковать. Исправить - разве что переписыванием заново всего после ввода матрицы, и тот надо подкорректировать. Программы лучше писать сначала псевдокодом на русском языке. Например, сначала написать только комментарии к программе типа "вводим данные", "ищем минимальный элемент строки", "находим среднее арифметическое строки", "заменяем минимальный элемент на среднее арифметическое", а потом уже переводить сверху вниз комментарии в куски кода на языке программирования. И по дороге может оказаться полезным вернуться назад и кое-что подкорректировать, например, заменив "ищем минимальный элемент" на "ищем индекс минимального элемента". Ссылка на комментарий Поделиться на другие сайты Поделиться
2mbler Опубликовано 25 ноября, 2011 Жалоба Поделиться Опубликовано 25 ноября, 2011 хорошо, вот более подкорректированная задача program matrix;uses crt;var a : array [1..10, 1..10] of integer; s : array [1..10] of real; t : real; n,m : integer; i,j,k,MinIndex : integer;beginclrscr;write('Введите количество строк'); read(n);write('Введите количество столбцов'); readln(m);writeln ('Введите матрицу:');{ввод матрицы}for i:=1 to n dofor j:=1 to m do begin gotoxy(j*5+10,i+5); readln(a[i,j]); end;{найти средние и минимальные значения по каждой строке} for i:=1 to n do begin k := 0; MinIndex := 1; for j:=1 to m do begin k:=k+a[i,j]; if a[i,j]<a[i,MinIndex] then MinIndex := j; end; {среднее значение строки сохраняем в массив S} s[i] := k / m; {выдадим среднее значение строки, минимальное значение строки и индекс минимального значения} WriteLn(i,'-я строка. Сред.ариф.строки =',s[i]:5:3, ' минимальное значение = ',a[i,MinIndex],' индекс ',MinIndex); {записываем среднее значение на место минимального} a[i,MinIndex] := Trunc(Round(s[i])); end; {сортировка массива средних значений s} {сортировка массива методом простых обменов ("пузырька") } for i:=1 to n-1 do for j:=i+1 to n do if s[i] > s[j] then begin t := s[i]; s[i] := s[j]; s[j] := t; end; {вывести отсортированный массив средних значений} WriteLn('Отсортированный массив:'); for i:=1 to n do Write(s[i]:5:3,' '); WriteLn;readkey;end. здесь мне надо вставить индексы минимума и показать на двумерном массиве, что минимум каждой строки заменён на среднее арифметическое этой же строки Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 25 ноября, 2011 Жалоба Поделиться Опубликовано 25 ноября, 2011 2mbler Это уже похоже на истину. Только округлять среднее к целым ни к чему, раз уж элементу массива полагается быть действительным числом, так и всему массиву тоже. Так что я это подкорректировал и вставил выдачу на экран новой матрицы. Насчет вставить индексы минимума не понял, у тебя индексы минимума в каждой строке уже выдаются. program matrix;uses crt;var a : array [1..10, 1..10] of real; s : array [1..10] of real; k,t : real; n,m : integer; i,j,MinIndex : integer;beginclrscr;write('Введите количество строк: '); read(n);write('Введите количество столбцов: '); readln(m);writeln ('Введите матрицу:');{ввод матрицы}for i:=1 to n dofor j:=1 to m do begin gotoxy(j*5+10,i+5); readln(a[i,j]); end;writeln;{найти средние и минимальные значения по каждой строке} for i:=1 to n do begin k := 0; MinIndex := 1; for j:=1 to m do begin k:=k+a[i,j]; if a[i,j]<a[i,MinIndex] then MinIndex := j; end; {среднее значение строки сохраняем в массив S} s[i] := k / m; {выдадим среднее значение строки, минимальное значение строки и индекс минимального значения} WriteLn(i,'-я строка. Ср.ар.строки =',s[i]:5:3, ' мин. значение = ',a[i,MinIndex]:5:3,' индекс ',MinIndex); {записываем среднее значение на место минимального} a[i,MinIndex] := s[i]; end;writeln; {сортировка массива средних значений s} {сортировка массива методом простых обменов ("пузырька") } for i:=1 to n-1 do for j:=i+1 to n do if s[i] > s[j] then begin t := s[i]; s[i] := s[j]; s[j] := t; end; {вывести измененную матрицу} writeln('Новая матрица:'); for i:=1 to n do begin for j:=1 to m do Write(a[i,j]:5:3,' '); writeln end; writeln; {вывести отсортированный массив средних значений} WriteLn('Отсортированный массив:'); for i:=1 to n do Write(s[i]:5:3,' '); WriteLn;readkey;end. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
magvay7 Опубликовано 26 ноября, 2011 Жалоба Поделиться Опубликовано 26 ноября, 2011 Извините что отвлекаю по пустякам,но ничего не могу сделать((Тему массивы вообще не понимаю,и нам эту тему никак не объясняют(Такой уж у нас преподаватель(Ну или сказать более честно,я ничего не могу усвоить.Пожалуйста помогите решить и разобраться в двух задачах.Язык паскаль. 1.Найти произведение элементов массива, кратных 3 и 9. Размерность массива 10. Заполнение массива осуществить случайными числами от 5 до 500. И вторая задача. 2.Составьте программу упорядочения по возрастанию элементов каждой строки двумерного массива C[1..4, 1..5]. Заполнение массива осуществить с клавиатуры. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 26 ноября, 2011 Жалоба Поделиться Опубликовано 26 ноября, 2011 (изменено) magvay7 массивы вообще не понимаю,и нам эту тему никак не объясняютМне кажется, достаточно увидеть текст одной простой программы с массивом, чтобы понять, что это такое и как это использовать. Массив - это набор пронумерованных переменных, номера которых, когда это нужно, вычисляются, например при их переборе. Или, иначе говоря, это обычные переменные с индексами, только индексы записываются в квадратных скобках, потому что на клавиатуре маленькие цифирки внизу не напечатать. Найти произведение элементов массива, кратных 3 и 9. Размерность массива 10. Заполнение массива осуществить случайными числами от 5 до 500.Кратных 3 ИЛИ 9. "и" подразумевает и 3 и 9 одновременно, но кратное 9 число автоматически будет кратно 3, так что строго по условию достаточно было бы проверять кратность только 9.var a:array[1..10]of integer; i:integer; p:real; b:boolean; beginrandomize; for i:=1 to 10 do a[i]:=5+random(496); for i:=1 to 10 do write(a[i]:5); writeln;p:=1; b:=false; for i:=1 to 10 do if (a[i] mod 3=0)or(a[i]mod 9=0) then begin p:=p*a[i]; b:=true end;writeln; if b then writeln(p:0:0) else writeln('There is not any proper number '); readlnend. Составьте программу упорядочения по возрастанию элементов каждой строки двумерного массива C[1..4, 1..5]. Заполнение массива осуществить с клавиатуры. const n=4; m=5;var c:array[1..n,1..m]of real; b:real; i,j,k:integer;beginfor i:=1 to n do begin write('Enter ',m,' numbers of the row ',i,': '); for j:=1 to m do read(c[i,j]); readln end; writeln;for i:=1 to n do begin for j:=1 to m do write(c[i,j]:8:0); writeln end; writeln;for k:=1 to n do for i:=1 to m-1 do for j:=1 to m-i do if c[k,j]>c[k,j+1] then begin b:=c[k,j]; c[k,j]:=c[k,j+1]; c[k,j+1]:=b end; for i:=1 to n do begin for j:=1 to m do write(c[i,j]:8:0); writeln end; readlnend. При вводе элементы строк разделяются пробелами, ввод строки завершается нажатием Enter. Изменено 26 ноября, 2011 пользователем Тролль 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
fisher21 Опубликовано 26 ноября, 2011 Жалоба Поделиться Опубликовано 26 ноября, 2011 Всем привет)помогите пожулайста решить задачи на языке паскаль. 1.Найти количество четных элементов одномерного массива. Размерность массива 20. Заполнение массива осуществить случайными числами от -50 до 50. 2.Дана прямоугольная матрица C[1..4, 1..5]. Найти строку с наибольшей суммой элементов. Заполнение массива осуществить с клавиатуры. Ссылка на комментарий Поделиться на другие сайты Поделиться
magvay7 Опубликовано 26 ноября, 2011 Жалоба Поделиться Опубликовано 26 ноября, 2011 magvay7Мне кажется, достаточно увидеть текст одной простой программы с массивом, чтобы понять, что это такое и как это использовать. Массив - это набор пронумерованных переменных, номера которых, когда это нужно, вычисляются, например при их переборе. Или, иначе говоря, это обычные переменные с индексами, только индексы записываются в квадратных скобках, потому что на клавиатуре маленькие цифирки внизу не напечатать. Кратных 3 ИЛИ 9. "и" подразумевает и 3 и 9 одновременно, но кратное 9 число автоматически будет кратно 3, так что строго по условию достаточно было бы проверять кратность только 9. var a:array[1..10]of integer; i:integer; p:real; b:boolean; beginrandomize; for i:=1 to 10 do a[i]:=5+random(496); for i:=1 to 10 do write(a[i]:5); writeln;p:=1; b:=false; for i:=1 to 10 do if (a[i] mod 3=0)or(a[i]mod 9=0) then begin p:=p*a[i]; b:=true end;writeln; if b then writeln(p:0:0) else writeln('There is not any proper number '); readlnend. const n=4; m=5;var c:array[1..n,1..m]of real; b:real; i,j,k:integer;beginfor i:=1 to n do begin write('Enter ',m,' numbers of the row ',i,': '); for j:=1 to m do read(c[i,j]); readln end; writeln;for i:=1 to n do begin for j:=1 to m do write(c[i,j]:8:0); writeln end; writeln;for k:=1 to n do for i:=1 to m-1 do for j:=1 to m-i do if c[k,j]>c[k,j+1] then begin b:=c[k,j]; c[k,j]:=c[k,j+1]; c[k,j+1]:=b end; for i:=1 to n do begin for j:=1 to m do write(c[i,j]:8:0); writeln end; readlnend. При вводе элементы строк разделяются пробелами, ввод строки завершается нажатием Enter. Спасибо огромно теперь буду тщательно разбираться. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 26 ноября, 2011 Жалоба Поделиться Опубликовано 26 ноября, 2011 fisher21 Ребята, а вам не кажется, что ваши задачки - близнецы, так что по решению одного варианта другие сделать самим вполне в ваших силах? Найти количество четных элементов одномерного массива. Размерность массива 20. Заполнение массива осуществить случайными числами от -50 до 50. var a:array[1..20]of integer; i,m:integer; beginrandomize; for i:=1 to 20 do a[i]:=-50+random(101); for i:=1 to 20 do write(a[i]:4); writeln;m:=0; for i:=1 to 20 do if not odd(a[i]) then inc(m); writeln('There is ',m,' even numbers'); readlnend. Дана прямоугольная матрица C[1..4, 1..5]. Найти строку с наибольшей суммой элементов. Заполнение массива осуществить с клавиатуры. const n=4; m=5;var c:array[1..n,1..m]of real; p,s:real; i,j,k:integer;beginfor i:=1 to n do begin write('Enter ',m,' numbers of the row ',i,': '); for j:=1 to m do read(c[i,j]); readln end; writeln;for i:=1 to n do begin for j:=1 to m do write(c[i,j]:8:0); writeln end; writeln;k:=1; for i:=1 to n do begin s:=0; for j:=1 to m do s:=s+c[i,j]; if i=1 then p:=s else if s>p then begin p:=s; k:=i end end;writeln('Maximal sum ',p:0:2,' has the row ',k); readlnend. При вводе элементы строк разделяются пробелами, ввод строки завершается нажатием Enter. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
fisher21 Опубликовано 27 ноября, 2011 Жалоба Поделиться Опубликовано 27 ноября, 2011 fisher21 Ребята, а вам не кажется, что ваши задачки - близнецы, так что по решению одного варианта другие сделать самим вполне в ваших силах? var a:array[1..20]of integer; i,m:integer; beginrandomize; for i:=1 to 20 do a[i]:=-50+random(101); for i:=1 to 20 do write(a[i]:4); writeln;m:=0; for i:=1 to 20 do if not odd(a[i]) then inc(m); writeln('There is ',m,' even numbers'); readlnend. const n=4; m=5;var c:array[1..n,1..m]of real; p,s:real; i,j,k:integer;beginfor i:=1 to n do begin write('Enter ',m,' numbers of the row ',i,': '); for j:=1 to m do read(c[i,j]); readln end; writeln;for i:=1 to n do begin for j:=1 to m do write(c[i,j]:8:0); writeln end; writeln;k:=1; for i:=1 to n do begin s:=0; for j:=1 to m do s:=s+c[i,j]; if i=1 then p:=s else if s>p then begin p:=s; k:=i end end;writeln('Maximal sum ',p:0:2,' has the row ',k); readlnend. При вводе элементы строк разделяются пробелами, ввод строки завершается нажатием Enter. спасибо большое Ссылка на комментарий Поделиться на другие сайты Поделиться
Radu Опубликовано 27 ноября, 2011 Жалоба Поделиться Опубликовано 27 ноября, 2011 всем привет! помогите пожулайста решить задачи на языке C++ обратная матрица методом Seidel( Зейделя ) спасибо огромное P.S. После почти года отсутствия я вернулся! Ссылка на комментарий Поделиться на другие сайты Поделиться
Radu Опубликовано 27 ноября, 2011 Жалоба Поделиться Опубликовано 27 ноября, 2011 P.P.S. вот программа которая считает определитель матрицы методом Гаусса. К ней нужно добавлять обратную матрицу методом Seidel( Зейделя ), хотя можно и отдельно сделать #include<stdio.h>#include<math.h>#include<conio.h>#include<ctype.h>#include<stdlib.h>#define NN 10int main(){clrscr();double a[NN][NN], t, det;int i, j, n, m, l;char yn;// <----Ввод квадратной матрицы---->do { printf("\n ранг матрицы (от 2 до %d): N=",NN); n = getche()-48;} while((n<2) || (n>NN));// <---- Ввод матрицы[NN][NN]---->printf("\n\n Случайные элементы матрицы? y/n: ");yn = getche();switch(tolower(yn)){ case 'y': for(i=0;i<n;i++) for(j=0;j<n;j++) a[i][j]=rand()%10; break; case 'n': printf("\nВвод матрицы %dx%d\n",n,n); for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%lf", &a[i][j]); break; default: { for(i=0;i<n;i++) { for(j=0;j<n;j++) a[i][j]= 0; a[i][i] = (rand()%10) + 1; } } break;}// <----Исходная матрица---->printf("\n Исходная матрица \n");for(i=0;i<n;i++) { for(j=0;j<n;j++) printf(" %6.2lf", a[i][j]); printf("\n");}// <----определитель---->det = 1;for(l=0; l<n-1; l++){ if(a[l][l]==0) { m = l+1; while((a[m][l] == 0) && (m<n)) m++; if(m >= n) { printf("\n Det A = 0"); getch(); return 0; } for(j=0; j<n; j++) { t = a[m][j]; a[m][j] = a[l][j]; a[l][j] = t; det = -det; } } for (i=l+1; i<n; i++) { t = a[i][l]/a[l][l]; for(j=l+1; j<n; j++) a[i][j] = a[i][j] - a[l][j]*t; } for (i=l+1; i<n; i++) a[i][l] = 0; printf("\n Матрица на шаге %d \n", l+1); for(i=0;i<n;i++) { for(j=0;j<n;j++) printf(" %6.2lf", a[i][j]); printf("\n"); }}for(i=0; i<n; i++) det *= a[i][i];printf("определитель =: %14.3f", det);det = pow(-4, 1.01);printf("\n определитель =: %14.3f", det);getch();return det;} Ссылка на комментарий Поделиться на другие сайты Поделиться
andre! Опубликовано 27 ноября, 2011 Жалоба Поделиться Опубликовано 27 ноября, 2011 Всем Привет! помогите пожалуиста решить задачу на языке C++ Задача: решения СЛАУ(Система линейных алгебраических уравнений)методом простых итераций C++ Вот пример нашел, но не запускается: //Метод простой итерации решения СЛАУ#include <stdio.h>#include <conio.h>#include <math.h>const n = 5;float A[n][n] = { { 79.2, 0, 35, 19.8, 24 }, { 39.6, 85, 0, 19.8, 25 }, { 19.8, -15, 45, 0, 10 }, { 49.5, 18, 20, 89.1, 0 }, { 9.9, 15, 20,-49.5, 95 }, };float B[n] = { 86, 55, 77, 5, -64};float X[30][n] = {0};float TEST[n]; float summ;float eps;int k = 0;bool ExitFunc(float eps){ if(k == 0) return true; for(int i=0; i<n; i++){ if( fabs(X[k][i]-X[k-1][i]) > eps ) return true; }return false; }void main(void){ printf("Enter eps:"); scanf("%f",&eps);do {for(int i=0; i<n; i++) { summ = 0; for(int j=0; j<n; j++) if(i!=j) summ += A[i][j] * X[k][j]; X[k+1][i] = (1/A[i][i]) * (B[i] - summ); } k++; }while(ExitFunc(eps));//Проверка printf("\nResult:\n"); for(int j=0; j<n; j++) printf("%4.8f ",X[k][j]); printf("\nTest:\n");for(int i=0; i<n; i++) { for(int j=0; j<n; j++) TEST[i] +=(A[i][j] * X[k][j]); printf("%4.8f ", TEST[i]); }printf("\nIterations:\n%i",k); getch();} Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 27 ноября, 2011 Жалоба Поделиться Опубликовано 27 ноября, 2011 andre! Он же пишет, почему не запускается. Замени const n = 5; на const int n = 5; и void main(void)на main(void) Ссылка на комментарий Поделиться на другие сайты Поделиться
andre! Опубликовано 27 ноября, 2011 Жалоба Поделиться Опубликовано 27 ноября, 2011 andre! Он же пишет, почему не запускается. Замени const n = 5; на const int n = 5; и void main(void)на main(void) Спасибо за ответ, но вот у меня где выдает ошибку: http://s7.directupload.net/images/111127/ij9q8po2.png http://s7.directupload.net/images/111127/xjsmpkka.png Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 27 ноября, 2011 Жалоба Поделиться Опубликовано 27 ноября, 2011 andre! Спасибо за ответ, но вот у меня где выдает ошибку:...Не вижу тут ошибки, может быть, какой-то недопустимый знак вместо пробела? В исходнике пробела не было. Попробуй перепечатать заголовок функции заново. У меня в DEv-C++ компилируется и выдает результаты.Radu Яндекс пока работает. Посмотри, такой распространенный метод наверняка найдется в готовом виде. Например, тут... Ссылка на комментарий Поделиться на другие сайты Поделиться
Radu Опубликовано 27 ноября, 2011 Жалоба Поделиться Опубликовано 27 ноября, 2011 andre!Не вижу тут ошибки, может быть, какой-то недопустимый знак вместо пробела? В исходнике пробела не было. Попробуй перепечатать заголовок функции заново. У меня в DEv-C++ компилируется и выдает результаты. Radu Яндекс пока работает. Посмотри, такой распространенный метод наверняка найдется в готовом виде. Например, тут... спасибо Ссылка на комментарий Поделиться на другие сайты Поделиться
Radu Опубликовано 27 ноября, 2011 Жалоба Поделиться Опубликовано 27 ноября, 2011 мда, ну никак не могу найти код для обратной матрицы. Решения СЛАУ методом Seidel( Зейделя )еше можно найти, а вот обратной матрицы нет. Спасибо за ссылку, но програма не работает, причем ошибок где-то 11 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти