HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 22.12.2007, 02:16
Neovild
Познающий
Регистрация: 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.
 
Ответить с цитированием

  #2  
Старый 25.12.2007, 20:31
Shawn1x
Banned
Регистрация: 24.08.2007
Сообщений: 201
С нами: 9849986

Репутация: 424
По умолчанию

Задание
используя алгоритмы и контейнеры Stl:
создай список из 20 случаных элементов, со значениями от 1 до 19.
отсортируй список так что бы сначала шли четные элементы
Заранее спасибо
 
Ответить с цитированием

  #3  
Старый 26.12.2007, 02:50
Release
Новичок
Регистрация: 08.11.2007
Сообщений: 2
С нами: 9740023

Репутация: 0
По умолчанию

На основе элементов вещественного массива А(n) и значения логической переменной Т вычислить количество положительных элементов массива А, если переменная Т имеет значение «истина» и произведение отрицательных элементов массива А в противном случае.

Реализация Паскаль.

Пожалуйстааааа!!!!
Email: Ermakgol@mail.ru или здесь...плиз
 
Ответить с цитированием

  #4  
Старый 26.12.2007, 17:45
Neovild
Познающий
Регистрация: 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.
 
Ответить с цитированием

  #5  
Старый 26.12.2007, 17:02
krypt3r
Познавший АНТИЧАТ
Регистрация: 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.
 
Ответить с цитированием

  #6  
Старый 26.12.2007, 17:15
Joker-jar
Постоянный
Регистрация: 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 целочисленная переменная, инициализированная нулем перед циклом
 
Ответить с цитированием

  #7  
Старый 27.12.2007, 07:33
krypt3r
Познавший АНТИЧАТ
Регистрация: 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..
 
Ответить с цитированием

  #8  
Старый 27.12.2007, 21:50
zarkon
Постоянный
Регистрация: 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..
 
Ответить с цитированием

  #9  
Старый 28.12.2007, 01:18
Heavy Metal
Новичок
Регистрация: 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..
 
Ответить с цитированием

  #10  
Старый 28.12.2007, 17:33
Loker
Познающий
Регистрация: 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 паскале поетому немного кривовато получилось. Но у меня приняли
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Американским студентам запретили пользоваться Skype KPOT_f!nd Мировые новости. Обсуждения. 1 28.09.2006 03:47
Любителям квестов сюда!! FoX's Болталка 10 25.01.2005 20:42



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.