singlepost

Помогите найти ошибку в программе на С!!! << На главную или назад  

Помогите!!! Написал программу, а она с ошибками, не могу исправить!..

#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)

20 ответов в теме “Помогите найти ошибку в программе на С!!!”

  1. 20
    Пашка Джиоев ответил:

    Вообще уже почти 10 лет этому стандарту, но не все компиляторы его поддерживают.

  2. 19
    Алексей Терентьев ответил:

    Точнее,с недавних пор,в новом стандарте можно,но это в gcc только,вроде как

  3. 18
    Андрей Титенков ответил:

    можно, переменная тогда используется грубо в цикле

  4. 17
    Алексей Терентьев ответил:

    Это не стандарт СИ.

  5. 16
    Алексей Терентьев ответил:

    В си нельзя так писать:for(int i=0;i<n;i++)
    Объявлять переменные надо до цикла,в начале блока.

  6. 15
    Константин Конашенков ответил:

    Вообще мне кажется модераторам надо удалять те темы, где просто код, никаких объяснений алгоритма и нет комментов. Это неуважение к тем, кто помогает. Если задаешь вопрос, потрудись корректно его задать

  7. 14
    Владимир Бондарец ответил:

    Скомпиль этот код в Microsoft Visual Studio 2005 или 2008, и всё отработает. Дело в том что разные компиляторы по разному реагируют на повторное декларирование переменной с таким же именем, напр. та же VS только более старая версия (6) тоже выдала бы такую ошибку

  8. 13
    Владимир Бондарец ответил:

    я так понимаю, ТС просто качнул где-то код, и не может его скомпилить…

    P.S. учись хотя бы сам разбираться в готовых примерах и не позорь ДПИ

  9. 12
    Ара Элларян ответил:

    там ошибку два раза такую выдает в середине в цикле:
    Multiple declaration for 'i'

  10. 11
    Константин Конашенков ответил:

    мдя….

  11. 10
    Ара Элларян ответил:

    Borland

  12. 9
    Пашка Джиоев ответил:

    В какой среде компилируешь? Builder?

  13. 8
    Ара Элларян ответил:

    лучше в заметке посмотрите, там я поисправлял ещё!..

  14. 7
    Ара Элларян ответил:

    вот ссылка
    //vkontakte.ru/note30065143_9669086

  15. 6
    Сергей Суслов ответил:

    ахаххах

  16. 5
    Сергей Суслов ответил:

    ой.. а што она делать должна? онас ошибкамиили прост оне компиллируеца?

  17. 4
    Ара Элларян ответил:

    там матрицы нужно посчитать, сумму и квадратное произведение!..
    она не компелируется, там 5 или 7 оштбок, не разберу, что с ними делать!..

  18. 3
    Антон Воробьёв ответил:

    fclose(f0;
    Print(a,n0;
    хе

  19. 2
    Антон Воробьёв ответил:

    rez=CreateMatr(n0;

  20. 1
    Ара Элларян ответил:

    {
    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;
    }

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.