
22.12.2007, 02:16
|
|
Познающий
Регистрация: 18.12.2007
Сообщений: 32
С нами:
9682572
Репутация:
86
|
|
Меня запарило такую фигню писать, ИМО это только для 8-9 класса лицея.
Моя шняга работает с квадратными матрицами. Порядок в матрице задается в константах.
Меня просто запарило писать такую гадость
Код:
program MATRIX;
uses crt;
const
MAX=4;
var
a,b,t1,t2,c1,c2:array [1..MAX,1..MAX] of integer;
j,i,k:integer;
key1,key2:char;
begin
while true do begin
clrscr;
for j:=1 to MAX do
for i:=1 to MAX do begin
t1[j,i]:=0; t2[j,i]:=0; c1[j,i]:=0; c2[j,i]:=0;
end;
repeat
clrscr;
writeln('1-console input'); writeln('2-auto'); writeln('3-exit');
key1:=readkey;
until ((key1='1') or (key1='2') or (key1='3'));
if key1='3' then break;
if key1='1' then begin
for j:=1 to MAX do begin
for i:=1 to MAX do begin
write('a[', j ,',' ,i ,']='); read(a[j,i]);
end;
writeln;
end;
for j:=1 to MAX do begin
for i:=1 to MAX do begin
write('b[', j ,',' ,i ,']='); read(b[j,i]);
end;
writeln;
end;
end;
if key1='2' then begin
writeln('Matrix 1');
for j:=1 to MAX do begin
for i:=1 to MAX do begin
a[j,i]:=random(10); write(a[j,i]); write(' ');
end;
writeln;
end;
writeln('Matrix 2');
for j:=1 to MAX do begin
for i:=1 to MAX do begin
b[j,i]:=random(10); write(b[j,i]); write(' ');
end;
writeln;
end;
end;
writeln(' Matrix created, press key'); key2:=readkey;
writeln('T-Matrix 1');
for i:=1 to MAX do begin
j:=1;
while j<=MAX do begin
t1[i,j]:=a[j,i]; inc(j);
end;
end;
for j:=1 to MAX do begin
for i:=1 to MAX do
write(t1[j,i],' ');
writeln;
end;
writeln('T-Matrix 2');
for i:=1 to MAX do begin
j:=1;
while j<=MAX do begin
t2[i,j]:=b[j,i]; inc(j);
end;
end;
for j:=1 to MAX do begin
for i:=1 to MAX do
write(t2[j,i],' ');
writeln;
end;
writeln(' T-Matrix created, press key'); key2:=readkey;
writeln('Matrix 1 * Matrix 2');
for i:=1 to MAX do
for j:=1 to MAX do
for k:=1 to MAX do
c1[i,j]:=c1[i,j]+a[i,k]*b[k,j];
for j:=1 to MAX do begin
for i:=1 to MAX do
write(c1[j,i],' ');
writeln;
end;
writeln('Matrix 2 * Matrix 1');
for i:=1 to MAX do
for j:=1 to MAX do
for k:=1 to MAX do
c2[i,j]:=c2[i,j]+b[i,k]*a[k,j];
for j:=1 to MAX do begin
for i:=1 to MAX do
write(c2[j,i],' ');
writeln;
end;
writeln(' Increase Matrix created, press key to clear screen'); key2:=readkey;
end;
end.
|
|
|

25.12.2007, 20:31
|
|
Banned
Регистрация: 24.08.2007
Сообщений: 201
С нами:
9849986
Репутация:
424
|
|
Задание
используя алгоритмы и контейнеры Stl:
создай список из 20 случаных элементов, со значениями от 1 до 19.
отсортируй список так что бы сначала шли четные элементы
Заранее спасибо
|
|
|

26.12.2007, 02:50
|
|
Новичок
Регистрация: 08.11.2007
Сообщений: 2
С нами:
9740023
Репутация:
0
|
|
На основе элементов вещественного массива А(n) и значения логической переменной Т вычислить количество положительных элементов массива А, если переменная Т имеет значение «истина» и произведение отрицательных элементов массива А в противном случае.
Реализация Паскаль.
Пожалуйстааааа!!!!
Email: Ermakgol@mail.ru или здесь...плиз
|
|
|

26.12.2007, 17:45
|
|
Познающий
Регистрация: 18.12.2007
Сообщений: 32
С нами:
9682572
Репутация:
86
|
|
Release, лови.
Код:
program ArrayNoobas;
uses crt;
const
Max=20;
var
a:array [1..MAX] of real;
i,kol:integer;
pro:real;
t:boolean;
procedure zapoln;
begin
clrscr;
for i:=1 to MAX do
a[i]:=-5+random(10);
end;
procedure create_t;
var
key:char;
begin
repeat
key:=readkey;
until (key='0')or(key='1') ;
if key='0' then t:=false
else t:=true;
end;
begin
zapoln;
create_t;
if t=true then begin
for i:=1 to MAX do
if a[i]>0 then inc(kol);
writeln(kol);
end
else begin
i:=1;
while i<=MAX do begin
inc(i);
if a[i-1]<0 then begin
pro:=a[i-1]; break; end;
end;
while i<=MAX do begin
if a[i]<0 then
pro:=pro*a[i];
inc(i);
end;
writeln(pro);
end;
readln;
end.
|
|
|

26.12.2007, 17:02
|
|
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
С нами:
10021597
Репутация:
905
|
|
Release, навскидку
Код:
const
n = 5;
var
a : array [1..n] of real;
p : real;
i : integer;
t : boolean;
begin
t := false;
writeln ('ввод данных в массив');
for i := 1 to n do begin
write ('Введите ', i, '-й элемент массива: ');
readln (a [i]);
end;
p := 1;
if t then
for i := 1 to n do
if a [i] > 0 then
p := p * a [i];
if not t then
for i := 1 to n do
if a [i] < 0 then
p := p * a [i];
writeln ('Произведение: ', p : 0 : 3);
end.
|
|
|

26.12.2007, 17:15
|
|
Постоянный
Регистрация: 11.03.2007
Сообщений: 581
С нами:
10088966
Репутация:
646
|
|
вычислить количество положительных элементов массива А, если переменная Т имеет значение «истина»
То есть тут:
Код:
if t then
for i := 1 to n do
if a [i] > 0 then
p := p * a [i];
надо делать типо:
Код:
if t then
for i := 1 to n do
if a [i] > 0 then
inc(count);
где count целочисленная переменная, инициализированная нулем перед циклом 
|
|
|

27.12.2007, 07:33
|
|
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
С нами:
10021597
Репутация:
905
|
|
Млин, сорри, пост невнимательно прочел ((
где count целочисленная переменная, инициализированная нулем перед циклом
Этого недостаточно, ее еще нужно описать в разделе var
Neovild, одно замечание - массив будет заполняться одним числом, ибо отсутствует Randomize в начале процедуры
А вот этот код для чего?
Код:
while i<=MAX do begin
inc(i);
if a[i-1]<0 then begin
pro:=a[i-1]; break; end;
end;
Поиск в массиве первого отрицательного числа? Имхо, это лишнее немного, достаточно проинициализировать переменную pro единицей перед циклом вычисления произведения (чуть не написал "производной"  ). Хотя ваш вариант программы тоже приемлем 
Последний раз редактировалось krypt3r; 27.12.2007 в 07:59..
|
|
|

27.12.2007, 21:50
|
|
Постоянный
Регистрация: 22.11.2006
Сообщений: 473
С нами:
10245426
Репутация:
216
|
|
Доброе время суток.
Требуется для курсового написать Генератор случайных чисел с экспоненциальным законом распределения. Формула: p(x) = l * exp(-* x).
вот что получилось у меня но проблема в том что ответ всегда равен нолю. в случае если поставить границы для рандома у него всегда одно число ноль. и ответ в результате тоже.
void main (){
double p;
srand((unsigned long)time(NULL));
double x=rand();
double l=rand();
p=l*exp(-l*x);
printf ("%d ,%d ,%d",p,x,l);
getch ();}
Заранее благодарен.
Последний раз редактировалось zarkon; 28.12.2007 в 00:42..
|
|
|

28.12.2007, 01:18
|
|
Новичок
Регистрация: 16.09.2007
Сообщений: 25
С нами:
9816424
Репутация:
62
|
|
Хелп. На асме (Tasm) надо накодить прогу, вычисляющую все простые числа в диапазоне от 2 до вводимого с клавы числа.
upd:
Кое как разобрался, написал ) выкладываю на всякий случай
Код:
.model tiny
.386
.Stack 70h
.code
start:
mov ax,@data
mov ds,ax
push cs
pop ds
mov ah,09h ; приглашение к вводу
mov dx,offset str1
int 21h
mov di,0 ; введенные символы
mov si,0 ; номер позиции
mov bp,10 ; основание системы
r1: mov ah,08h
int 21h ;читаем символ
cmp al,'0' ;если это служебный символ -> r3
jb r3
cmp al,'9' ;если это не цифра -> r1
ja r1
mov bl,al ;сохраним символ в bl
mov ax,di
mul bp ;умножаем на 10
mov dl,bl
sub dl,'0' ;преобразуем символ в цифру
mov dh,0 ;DX - цифра
add dx,ax
jc r1 ;Если перенос -> переполнение
inc si
mov di,dx
mov dl,bl
mov ah,02h
int 21h
jmp r1
r3: cmp si,0
je r1
cmp al,13
je enter2 ;нажали ввод
cmp al,8
jne r1
enter2:
mov ah,09h ;новая строка
mov dx,offset newline
int 21h
mov mem,di ;дублируем эталон
mov nen,di
mov ax,mem ; эталон в AX для работы
mov cnt,1 ; счетчик в еденицу
mov bl,1
mul bl ; переводим AX в DX:SI
main_cycle: ;главный цикл
add cnt,1 ; проверяем следующее число
mov bx,mem
mov ax,cnt
cmp ax,bx ; проверены все числа...
jg qall
mov bx,1 ; переносим AX в DX:AX
mul bx
mov cx,2 ; делим с тройки
internal:
push ax
push dx ; сохраняем текущее проверяемое число
;mov bx,cx
div cx ; делим DX:AX на CX
cmp dx,0 ; если остатка нету
je main_cycle; то число не простое
pop dx
pop ax
add cx,1
cmp ax,cx
jle prime
jmp internal
prime:
mov ah,09h ;выводим простое число
mov dx,offset space
int 21h
mov ax,cnt
call print_prime
jmp main_cycle
qall:
mov ax,4c00h;Выход
int 21h
print_prime proc ;вывод числа
push -1
l: xor dx,dx;чистим dx
div bp ;делим
push dx ;сохраним цифру
cmp ax,0 ;остался 0?
jne l ;если нет, продолжим
mov ah,2h
l2: pop dx ;восстановим цифру
cmp dx,-1 ;дошли до конца -> выход
je qex
add dl,'0' ;преобразуем число в цифру
int 21h ;выведем цифру на экран
jmp l2 ;и продолжим
qex:
ret
endp print_prime
str1 db '.-==[Prime Numbers]==-.',10,13
db '> $'
space db ' $'
newline db 10,13,'$'
mem dw 0
nen dw 0
cnt dw 0
end start
Последний раз редактировалось Heavy Metal; 29.12.2007 в 04:58..
|
|
|

28.12.2007, 17:33
|
|
Познающий
Регистрация: 25.10.2007
Сообщений: 69
С нами:
9760218
Репутация:
52
|
|
Может кому поможет.
Курсовая работа: Нахождение интеграла 5 методами с высокой точностью..
Код:
function funk(var x:real):real;
begin
funk:=Ваша функция
end;
procedure left(var a,b,e:real);
var
k,s1,s2,p,l,rez:real;
i,g,n:integer;
begin
n:=30;
g:=0;
repeat
s2:=s1;
p:=(b-a)/n;
l:=0;
g:=g+1;
for i:=0 to n-1 do
begin
k:=a+i*p;
l:=l+funk(k);
end;
s1:=l*p;
n:=n*2;
until abs(s1-s2)<=e;
rez:=s1;
writeln('rezult ',rez:6:5,' kol-vo itaracij ',g);
readln;
end;
procedure right(var a,b,e:real);
var
t,s1,s2,h,s,rez:real;
n,i,g:integer;
begin
n:=30;
g:=0;
repeat
s2:=s1;
h:=(b-a)/n;
s:=0;
g:=g+1;
for i:=1 to n do
begin
t:=a+i*h;
s:=s+funk(t);
end;
s1:=s*h;
n:=n*2;
until abs(s1-s2)<=e;
rez:=s1;
writeln('rezult ',rez:6:5,' kol-vo itaracij ',g);
readln;
end;
procedure center (var a,b,e:real);
var
t,s1,s2,h,s,rez:real;
n,i,g:integer;
begin
n:=30;
g:=0;
repeat
s2:=s1;
h:=(b-a)/n;
s:=0;
g:=g+1;
for i:=0 to n-1 do
begin
t:=a+h/2+h*i;
s:=s+funk(t);
end;
s1:=s*h;
n:=n*2;
until abs(s1-s2)<=e;
rez:=s1;
writeln('rezult ',rez:6:5,' kol-vo itaracij ',g);
readln;
end;
procedure trap(var a,b,e:real);
var
t,s1,s2,h,s,rez: real;
i,n,g:integer;
begin
n:=30;
g:=0;
repeat
s2:=s1;
h:=(b-a)/n;
s:=(funk(a)-funk(b))/2;
g:=g+1;
for i:=1 to n-1 do
begin
t:=a+i*h;
s:=s+funk(t);
end;
s1:=h*s;
n:=n*2;
until abs(s1-s2)<=e;
rez:=s1;
writeln('rezult ',rez:6:5,' kol-vo itaracij ',g);
readln;
end;
procedure simps(var a,b,e:real);
var
s,r,s2,s1,h:real;
m,n,ch,g:integer;
begin
n:=30;
ch:=1;
g:=0;
repeat
s2:=s1;
h:=(b-a)/(n-1);
s:=funk(a)+funk(b);
g:=g+1;
for m:=1 to n-2 do
begin
r:=a+h*m;
s:=s+ch*funk(r);
if (ch=4) then ch:=2 else ch:=4;
end;
s1:=s*h/3;
until abs(s2-s1)/s1<e;
writeln('rezult ', s1 :6 :5,' kol-vo iteracij ',g);
readln;
end;
var
a,b,e:real;
vibor:integer;
begin
repeat
writeln('Vvedite metod naxogdeni9 Interala');
writeln('1-Pravilo levix pr9moygolnikov');
writeln('2-Pravilo pravix pr9moygolnikov');
writeln('3-Pravilo srednix pr9moygolnikov');
writeln('4-Naxogdenie integrala metodom simpsona');
writeln('5-Naxogdenie integrala s pomowu pravila Tropesii');
writeln('6-Informasi9 o programme');
readln(vibor);
writeln('');
if vibor=6 then
begin
clrscr;
writeln('-===========================================------');
writeln('Ваше имя сюда вобьете');
writeln('-===========================================------');
writeln('');
end;
until vibor<=5;
clrscr;
writeln('-===========================================------');
write('Vvedite a - ');readln(a);
writeln('');
writeln('-===========================================------');
write('VVedite b - ');readln(b);
writeln('');
writeln('-===========================================------');
write('Vved EPS - ');readln(e);
writeln('');
writeln('-===========================================------');
if vibor=1 then
begin
writeln('Vi vibrali 1. Metod LeVix pr9moygolnikov'); writeln;
left(a,b,e);
end;
if vibor=2 then
begin
writeln('Vi vibrali 2. Metod PraVix pr9moygolnikov'); writeln;
right(a,b,e);
end;
if vibor=3 then
begin
writeln('Vi vibrali 3. Metod Srednix pr9moygolnikov'); writeln;
center(a,b,e);
end;
if vibor=4 then
begin
writeln('Vi vibrali 4.Metod TraPesii'); writeln;
trap(a,b,e);
end;
if vibor=5 then
begin
writeln('Vi vibrali 5. Metod Simpsona '); writeln;
simps(a,b,e);
end;
readln
end.
Писал на ABC паскале поетому немного кривовато получилось. Но у меня приняли
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|