Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

21.12.2007, 23:36
|
|
Познающий
Регистрация: 18.12.2007
Сообщений: 32
Провел на форуме: 614948
Репутация:
86
|
|
Ded MustD!e, я тебе по матрицам напишу
|
|
|

22.12.2007, 02:16
|
|
Познающий
Регистрация: 18.12.2007
Сообщений: 32
Провел на форуме: 614948
Репутация:
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.
|
|
|

23.12.2007, 20:25
|
|
Участник форума
Регистрация: 08.09.2007
Сообщений: 211
Провел на форуме: 5076186
Репутация:
778
|
|
Определить класс "дата" c компонентными данными: число, месяц, год. Перегрузить операциия: >>,<<
(вывод в формате "чч/мм/гггг"),
>= (проверка на более позднюю дату или на их равенство), += (прибавить n дней).
Код:
#include <iostream>
#include <iomanip>
using namespace std;
class v_date
{
int number;
int month;
int year;
public:
v_date (int , int, int );
int put_1();
int put_2();
int put_3();
void get_1(int );
void get_2(int );
void get_3(int );
};
v_date::v_date(int a=0, int b=0, int c=0)
{
if (a<31)
number=a;
if (b<13)
month=b;
if (c<2014)
year=c;
}
int v_date::put_1()
{
return number;
}
int v_date::put_2()
{
return month;
}
int v_date::put_3()
{
return year;
}
void v_date::get_1(int a)
{
if (a<31)
number=a;
else
number=0;
}
void v_date::get_2(int b)
{
if (b<13)
month=b;
else
month=0;
}
void v_date::get_3(int c)
{
if (c<2014)
year=c;
else
year=0;
}
ostream& operator << (ostream& out, v_date p)
{
out<<setw(2)<<p.put_1()<<"/"<<setw(2)<<p.put_2()<<"/"<<setw(4)<<p.put_3()<<endl;
return out;
}
istream& operator >> (istream& in, v_date& p)
{
int a;
cout<<"\nEnter number ";
in>>a;
p.get_1(a);
cout<<"\nEnter month ";
in>>a;
p.get_2(a);
cout<<"\nEnter year ";
in>>a;
p.get_3(a);
return in;
}
int operator >= (v_date p, v_date pp)
{ int kz;
int np=365*p.put_3()+30*p.put_2()+p.put_1();
int npp=365*pp.put_3()+30*pp.put_2()+pp.put_1();
return kz=np<npp ? 0: 1; //вычисляем большую дату
}
void main()
{
v_date d1, d2;
cout<<"\nEnter d1\n";
cin>>d1;
cout<<"\nd1="<<d1;
cout<<"\nEnter d2\n";
cin>>d2;
cout<<"\nd2="<<d2;
if (d1>=d2)
cout<<"\nbig number "<<d1;
else
cout<<"\nbig number "<<d2;
}
вот программка не хватает оператора +=, не могу понять как сделать... что-то вроде
Код:
v_date operator += (v_date p, v_date pp)
{ int zz; zz=p.put_1()+pp.put_1(); return zz;}
может кто поможет /
//решил
Последний раз редактировалось Nea7; 24.12.2007 в 19:04..
|
|
|

25.12.2007, 19:43
|
|
Новичок
Регистрация: 30.09.2007
Сообщений: 10
Провел на форуме: 21488
Репутация:
0
|
|
Уважаемые Форумчане, помогите пожалуйста с выполнением лабораторной работы на языке С. Дело в том, что лабораторную работу нужно сдать уже в четверг, до него осталось 2 дня, а помимо программирования нужно до четверга сдать ещё 3 зачёта, которые придётся учить, следовательно некого просить о помощи...
Задание лабораторной такое:
Дан файл (333.dat) в котором находятся две квадратные матрицы. Файл выглядит примерно таким образом:
Код:
5 4
х х х х х
х х х х х
х х х х х
х х х х х
х х х х х
у у у у
у у у у
у у у у
у у у у
где 5 - определитель размерности первой матрицы, 4 - определитель размерности второй матрицы, х - любое число в первой матрице, у - любое число во второй матрице.
Итак нам нужно:
1) проверить наличие файла
2) считать оба массива из файла, предварительно заказав для них память
Код:
a = (int **)malloc(n*sizeof(int *));
n - наше первое число 5
for(i=0; i<n; i++)
a[i] = (int *)malloc(n*sizeof(int));
ну в подобном духе...
3) Из первых двух матриц составить третью матрицу, в которой левый верхний угол состоит из элементов той матрицы, след которой больше, а правый нижний - из элементов второй матрицы. Остальные элементы матрицы равны 0.
4) Вывести результат на экран.
Очень надеюсь, что Вы мне поможете. Напомню, что язык, на котором нужно составить программу - "С". (желательно под Visual Studio 2005).
Последний раз редактировалось Furious; 25.12.2007 в 19:45..
|
|
|

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

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

26.12.2007, 17:02
|
|
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме: 3660186
Репутация:
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
Провел на форуме: 4172659
Репутация:
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 целочисленная переменная, инициализированная нулем перед циклом 
|
|
|

26.12.2007, 17:45
|
|
Познающий
Регистрация: 18.12.2007
Сообщений: 32
Провел на форуме: 614948
Репутация:
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.
|
|
|

27.12.2007, 07:33
|
|
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме: 3660186
Репутация:
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..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|