Помогите!!! Написал программу, а она с ошибками, не могу исправить!..
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>
enum S_INPUT {S_FILE,S_CONSOLE};
float **FreeMatr(float **m,int n);
float **CreateMatr(int n);
float **MultiplyNumber(float **sl,float x,int n);
float **AddMatr(float **sl,float **s2,int n);
float **Multiply(float **sl,float **s2,int n);
void Print(float **m, int n);
void ConsoleInput(float **a,int n);
void FileInput(float **a,int n);
void FileOutput(float **a,int n);
int input(S_INPUT fi);
S_INPUT SelIO();
void main()
{
float **A,**B,**C,e=0;
int N;
e=sqrt(e);
S_INPUT f;
f=SelIO();
N=input(f);
if(N!=0)
{
A=CreateMatr(N);
B=CreateMatr(N);
C=CreateMatr(N);
if(f==S_CONSOLE)
{
ConsoleInput(A,N);
ConsoleInput(B,N);
Print(A,N);
Print(B,N);
}
else
{
FileInput(A,N);
FileInput(B,N);
}
C=Multiply(AddMatr(Multipty(A,A,N),MultiplyNumber(Multipty(B,B,N),-1,N),N),AddMatr(A,B,N),N);
f=SelIo();system("cls");
if(f==S_CONSOLE)
{
Print(A,N);
Print(B,N);
Print(C,N);
}
else
{
FileOutput(C,N);
}
}
else
printf("N accepts inadmissible value\n");
FreeMatr(A,N);
FreeMatr(B,N);
FreeMatr(C,N);
free(A);
free(B);
free(C);
}
float **FreeMatr(float **m,int n)
{
for(int i=0;i<n;i++)
free(m[i]);
return m;
}
float **CreatMatr(int n)
{
float **m;
m=(float**)malloc(n*sizeof(float));
for(int i=0;i<n;i++)
m[i]=(float*)malloc(n*sizeof(float));
return m;
}
float **MultiplyNumber(float **sl,float x,int n)
{
float **rez;
rez=CreateMatr(n);
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
rez[i][j]=x*sl[i][j];
}
return rez;
}
float **AddMatr(float **sl,float **s2, int n)
{
float **rez;
rez=CreateMatr(n);
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
rez[i][j]=sl[i][j]+s2[i][j];
}
return rez;
}
float **Multiply(float **sl,float *s2,int n)
{
float **rez;
rez=CreateMatr(n);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
rez[i][j]=0;
for(int k=0;k<n;k++)
rez[i][j]+=sl[i][j]*s2[k][j];
}
return rez;
}
void Print(float **m,int n)
{
for(int i=0;i<n;i++)
{
for(intj=0;j<n;j++)
printf("%-10.3f",m[i][j]);
printf("\n");
}
void ConsoleInput(float **a,int n)
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
printf("Enter element [%d][%d]",i+1,j+1);
scanf("%f",&a[i][j]);
}
printf("\n");
}
void FileInput(float **a,int n)
{
FILE *f;
int i,j;
char path[100];
printf(Wrong path or a file name. Please try again");
gets(path);
}
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
fscanf(f,"%f",&a[i][j]);
fclose(f);
Print(a,n0;
}
void FileOutput(float **a,int n)
{
FILE *f;
int i,j;
char path[100];
printf("Enter path and file name");
gets(path);
while((f=fopen(path,"w+"))==NULL)
1 февраля 2010 в 12:03
Вообще уже почти 10 лет этому стандарту, но не все компиляторы его поддерживают.
1 февраля 2010 в 12:00
Точнее,с недавних пор,в новом стандарте можно,но это в gcc только,вроде как
1 февраля 2010 в 10:03
можно, переменная тогда используется грубо в цикле
1 февраля 2010 в 10:03
Это не стандарт СИ.
1 февраля 2010 в 1:03
В си нельзя так писать:for(int i=0;i<n;i++)
Объявлять переменные надо до цикла,в начале блока.
31 января 2010 в 23:03
Вообще мне кажется модераторам надо удалять те темы, где просто код, никаких объяснений алгоритма и нет комментов. Это неуважение к тем, кто помогает. Если задаешь вопрос, потрудись корректно его задать
31 января 2010 в 23:02
Скомпиль этот код в Microsoft Visual Studio 2005 или 2008, и всё отработает. Дело в том что разные компиляторы по разному реагируют на повторное декларирование переменной с таким же именем, напр. та же VS только более старая версия (6) тоже выдала бы такую ошибку
31 января 2010 в 23:01
я так понимаю, ТС просто качнул где-то код, и не может его скомпилить…
P.S. учись хотя бы сам разбираться в готовых примерах и не позорь ДПИ
31 января 2010 в 21:05
там ошибку два раза такую выдает в середине в цикле:
Multiple declaration for 'i'
31 января 2010 в 21:04
мдя….
31 января 2010 в 20:02
Borland
31 января 2010 в 17:00
В какой среде компилируешь? Builder?
31 января 2010 в 15:03
лучше в заметке посмотрите, там я поисправлял ещё!..
31 января 2010 в 15:01
вот ссылка
//vkontakte.ru/note30065143_9669086
31 января 2010 в 15:01
ахаххах
31 января 2010 в 15:01
ой.. а што она делать должна? онас ошибкамиили прост оне компиллируеца?
31 января 2010 в 15:01
там матрицы нужно посчитать, сумму и квадратное произведение!..
она не компелируется, там 5 или 7 оштбок, не разберу, что с ними делать!..
31 января 2010 в 15:01
fclose(f0;
Print(a,n0;
хе
31 января 2010 в 15:01
rez=CreateMatr(n0;
31 января 2010 в 15:00
{
printf("It is impossible to make record");
gets(path);
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
fprintf(f,"%f",a[i][j]);
fpintf(f,"\n");
}
fclose(f);
}
int input(S_INPUT fi)
{
char path[100];
FILE *f;
int n;
if(fi==S_CONSOLE)
{
printf("Enter n");
scanf("%d",&n);
}
else
{
printf("Enter path and file name");
gets(path);
while((f=fopen(path,"r"))==NULL)
{
printf(Wrong path or a file name. Please try again");
gets(path);
}
fscanf(f,"%d",&n);
fclose(f);
}
if((n>8)||(n<1))
n=0;
return n;
}
S_INPUT SelIO()
{
char a;
printf("Use file?");
a=getch();
system("cls");
S_INPUT b;
if ((a=='Y')||(a=='Y'))
b=S_FILE;
else
b=S_CONSOLE;
return b;
}