|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Тескт программы
#include <stdafx.h> #include <stdlib.h> #include <conio.h> #include <math.h> #include <iostream> #include "cstdlib"
void vyvod(double **a, int n){ int i, j; for(i=0;i<n; i++){ for(j=0;j<n+1;j++){if(j!=0&&j!=n&&a[i][j-1]!=0) printf("+"); if(j==n) printf("="); if(j<n&&a[i][j]!=0) printf("%.1lf*X%d", a[i][j], j+1); if(j==n) printf("%.1lf", a[i][j]);} printf("\n");
}}
void vychislenie(double **a,double *x, int n){ int i, j, k=0, g, flag=1; double *b, l;setlocale(LC_ALL, "Russian"); b=(double*)malloc((n+1)*sizeof(double*)); for(k=0; k<n-1&&flag==1; k++){printf("\nПроверка коэффициентов на равенство нулю\n");
if(a[k][k]==0){ flag=0;
for(i=k; i<n; i++){ if(a[i][k]!=0){ g=i;flag=1;}} if(flag==1){ for(j=0; j<n+1; j++){ b[j]=a[k][j]; a[k][j]=a[g][j]; a[g][j]=b[j];}}}
if(flag==1&&k<n-1){ printf("Успешно\n");getch(); for(i=k+1; i<n; i++){l=a[i][k]; for(j=k; j<n+1; j++){ a[i][j]=a[i][j]-l*a[k][j]/a[k][k];}} printf("Вводим коэффициент m%d=ai%d/a%d%d, умножаем на строку %d,\n и вычитаем из строки с номером %d.\nПолучаем новую систему:\n", k+1, k+1, k+1, k+1, k+1, k+1); vyvod(a, n);printf("Нажмите любую клавишу чтобы продолжить\n"); getch(); }}
if(a[n-1][n]==0&&flag==1&&a[n-1][n-1]==0) flag=2;
if(flag==1){ for(i=n-1; i>-1; i--){ for(j=i; j<n; j++){ if(j==i) x[i]=a[i][n]/a[i][i];else x[i]=x[i]-x[j]*a[i][j]/a[i][i];}}}
if(flag==2) printf("Бесконечное множество решений\n"); if(flag==0) printf("Решений нет\n"); if(flag==1){ printf("\nКорни системы:\n"); for(i=0; i<n; i++) printf("X%d=%.1lf\n", i+1, x[i]);} getch(); }
int _tmain(int argc, _TCHAR* argv[]) {int i,j,n, d;double **system, *x;setlocale(LC_ALL, "Russian");do{ printf("Введи порядок системы уравнений: n="); scanf("%d", &n);
x=(double*)malloc(n*sizeof(double*)); system=(double**)malloc((n+1)*sizeof(double**)); for(i=0; i<n; i++) system[i]=(double*)malloc(n*sizeof(double*));
for(i=0; i<n; i++){ for(j=0; j<n+1; j++){ if(j!=n) printf("Введите коэффициент a%d%d системы: ", i+1,j+1); else printf("Введите элемент b%d системы: ", i+1); scanf("%lf", &system[i][j]); }} printf("\nВаша система:\n\n"); vyvod(system, n); for(d=0; d!=110 && d!=78;){ if(d!=0){ printf("\nВаша система:\n\n"); vyvod(system, n); } printf("\nНажмите Y, если хотите редактировать систему, или N чтобы продолжить\n"); d=getch(); if(d==121||d==89){printf("Введите номер уравнения, в котором хотите изменить элемент (i>0, i<n+1): i="); scanf("%d", &i); printf("Введите номер этого элемента в уравнении (j>0; j<n+2): j="); scanf("%d", &j);if(i>0&&i<n+1&&j>0&&j<n+2){ i=i-1; j=j-1; printf("Введите этот элемент: "); scanf("%lf", &system[i][j]);} else printf("\nHеверный номер\n");} }
printf("Нажмите на любую клавишу для вычисления корней системы"); getch(); vychislenie(system,x, n);printf("Нажмите Esc, чтобы выйти из программы или любую другую клавишу, чтобы запустить занов\n");}while(getch()!=27);
return 0; }
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |