ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #151  
Старый 21.12.2007, 23:36
Аватар для Neovild
Neovild
Познающий
Регистрация: 18.12.2007
Сообщений: 32
Провел на форуме:
614948

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

Ded MustD!e, я тебе по матрицам напишу
 
Ответить с цитированием

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

  #153  
Старый 23.12.2007, 20:25
Аватар для Nea7
Nea7
Участник форума
Регистрация: 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..
 
Ответить с цитированием

  #154  
Старый 25.12.2007, 19:43
Аватар для Furious
Furious
Новичок
Регистрация: 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..
 
Ответить с цитированием

  #155  
Старый 25.12.2007, 20:31
Аватар для Shawn1x
Shawn1x
Banned
Регистрация: 24.08.2007
Сообщений: 201
Провел на форуме:
983157

Репутация: 424
Отправить сообщение для Shawn1x с помощью ICQ
По умолчанию

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

  #156  
Старый 26.12.2007, 02:50
Аватар для Release
Release
Новичок
Регистрация: 08.11.2007
Сообщений: 2
Провел на форуме:
7470

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

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

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

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

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

  #158  
Старый 26.12.2007, 17:15
Аватар для Joker-jar
Joker-jar
Постоянный
Регистрация: 11.03.2007
Сообщений: 581
Провел на форуме:
4172659

Репутация: 646


Отправить сообщение для Joker-jar с помощью ICQ
По умолчанию

Цитата:
вычислить количество положительных элементов массива А, если переменная Т имеет значение «истина»
То есть тут:
Код:
  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 целочисленная переменная, инициализированная нулем перед циклом
 
Ответить с цитированием

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

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



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



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


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




ANTICHAT.XYZ