Автор: BednuuStudent
Дата сообщения: 21.01.2010 21:23
Помогите плз
Мне надо подробно описание всех функций програми
[more]
Код:
#include <iostream.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
const int SIZE_J=5;
const int SIZE_I=4;
void gauss(float[][SIZE_J], int, int, int);
void gauss_tmp(float[][SIZE_J]);
void main()//Создаем пустую функцию для ввода параметров.
{
clrscr()//отчищаем дисплей;
Float mas[SIZE_I][SIZE_J]={{4,5,6,7,1},{8,9,10,11,2},{12,3,3,5,3},{16,-1,-2,3,4}};//создаем матрицу размером IxJ
float sum=0; // инициализируем переменную sum,задавая ей начальное значени 0
int kod;//объявляем переменную kod как int(целочисленную) в диапазоне -32767 - 32767
printf("Danaya programa vu4iclyaet CLAY metodom Dgordano-Gaysa\n\n"); //используемых для форматного вывода — вывода в различные потоки значений разных типов, //отформатированных согласно заданному шаблону. Этот шаблон определяется составленной по //специальным правилам строкой (форматной строкой).
printf("1 na4at\n0 vuxod\n\n\n");
{
kod=getch();// в переменную kod заносим значение введенное с
// клавиатуры(getch()-читает без эхо-отображения отдельный символ
// прямо с консоли. Напечатанные (введенные) символы не имеют
// эхо-отображения. Если введен CONTROLL-C, система выполняет INT
// 23H.)
switch(kod); //вычисляется выражение в круглых скобках после оператора switch //(предварительная стадия);
//это значение последовательно сравнивается со значениями константных выражений за метками case //(стадия определения начальной точки выполнения оператора);
// если значения совпадают, управление передаётся соответствующему помеченному оператору (стадия //выполнения);
// если ни одно значение не совпадает и в теле оператора case есть оператор, помеченный меткой //default, управление передаётся этому оператору (но даже в этом случае сочетание объявления с //инициализацией недопустимо!) (стадия выполнения);
// если ни одно значение не совпадает, и в теле оператора case нет оператора, помеченного меткой //default, управление передаётся оператору, следующему за оператором switch (стадия выполнения).
{
case 49:
{
gauss_tmp(mas);
printf("\n\n\nnajmite liubuiu klavishu dla vuxoda");
getch();
}break;
case 48:
{
exit(0);
}break;
}
}
}
void gauss_tmp(float mas[][SIZE_J]) //возвращаемая функция
//тип_возврата имя_функции(список_параметров)
//{
// Тело_функции
//}
{
float mas_tmp[SIZE_I][SIZE_J];
for(int i=0;i<SIZE_I;i++) //цикл for позволяет выполнить автоматическую //инициализацию и инкременирование переменной счетчика
// for(инициализация; условие; инкримент)
// {
// блок_операторов
// }
{
for(int j=0;j<SIZE_J;j++)mas_tmp[i][j]=mas[i][j];
}
gauss(mas_tmp,SIZE_I,SIZE_J,0);
}
void gauss(float mas[][SIZE_J], int size_i, int size_j, int start) //возвращаемая //функция
{
float x, y, z, t;
if(start==size_j-2)
{
int i=0;
t=mas[i][size_j-1]/mas[i][start]; i++; start--;
z=(mas[i][size_j-1]+t)/mas[i][start]; i++; start--;
y=(mas[i][size_j-1]+t+z)/mas[i][start]; i++; start--;
x=(mas[i][size_j-1]+t+z+y)/mas[i][start]; i++; start--;
printf("x=%f\nx=%f\nx=%f\nx=%f\n",x,y,z,t);
return;
}
float del;
float tmp;
for(int i=0;i<=size_i-(start+1);i++)
{
del=mas[i][start];
for(int j=0;j<size_j;j++)
{
mas[i][j]=mas[i][j]/del;
}
}
for(int j=0;j<size_j;j++)
{
tmp=mas[0][j];
mas[0][j]=mas[size_i-(start+1)][j];
mas[size_i-(start+1)][j]=tmp;
}
for(i=0;i<size_i-(start+1);i++)
{
for(int j=0;j<size_j;j++)
{
mas[i][j]=mas[size_i-(start+1)][j]-mas[i][j];
}
}
gauss(mas,size_i,size_j,start+1);
}