Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2009, 15:27   #11
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
void vvod(double**);

int main()
{
double **a;
vvod(a);

return 0;
}

void vvod(double **a)
{
double *max,*min;
int i,j,n=10,o=10,k,m,v,w;

FILE* Op = fopen("in0.txt","r");
a=(double**)calloc(n, sizeof(double*));
printf(" isxodnaya matrica\n");
for(i=0;i<n;i++){
*(a+i)=(double*)calloc(o,sizeof(double));
for(j=0;j<o;j++){
fscanf(Op,"%lf",a[i][j]);
printf("%.1lf ", a[i][j]);
}
printf("\n");
}
return;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 02.06.2009, 16:22   #12
helavisa
Пользователь
 
Регистрация: 31.05.2009
Сообщений: 10
По умолчанию

плавно перехожу к след этапу и тут не пашет и ошибку не кажет

Код:
#include <stdio.h>
#include <malloc.h>
#include <math.h>

void vvod(double**);
void obrabotka(double**);
int main()
{
double **a,**b;
vvod(a);
obrabotka(a,b);
return 0;
}

void vvod(double **a)
{
double *max,*min;
int i,j,n=10,o=10,k,m,v,w;
FILE*Op;
Op= fopen("in0.txt","r");
a=(double**)calloc(n, sizeof(double*));
printf(" isxodnaya matrica\n");
for(i=0;i<n;i++){
*(a+i)=(double*)calloc(o,sizeof(double));
for(j=0;j<o;j++){
fscanf(Op,"%lf",&a[i][j]);
printf("%.1lf ", a[i][j]);
}
printf("\n");
}
return;
}

void obrabotka(double **a,double **b)
{
int v,w;
double *max,*min;
int k,m,i,j;
FILE* Ex = fopen("out1.txt","w");
b=(double**) calloc(w, sizeof(double*));
for(i=0;i<w;i++)
*(b+i)=(double*)calloc(v,sizeof(double));

i=0;
j=0;
printf(" result\n");
do{
for (k=0; k<10; k++)
  for (m=i; m<10; m++)
    if(max<(*(a+k)+m)) max=(*(a+k)+m);

for (k=j;k<=j && k<10; k++)
  for (m=0; m<10; m++)
    if(min>(*(a+k)+m)) min=(*(a+k)+m);

*(*(b+i)+j)=(*min+*max)/2;


printf("%.1f ", b[i][j]);
fprintf(Ex, "%.1f ",b[i][j]);

if(i>=9){
i=0;
j++;
}  else i++;
} while(j!=10);
return;
}
helavisa вне форума Ответить с цитированием
Старый 02.06.2009, 16:35   #13
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Пользуйтесь отладчиком!
Вылетает вот здесь:
Код:
*(b+i)=(double*)calloc(v,sizeof(double));
в функции obrabotka.
У вас v и w не проинициализированы.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 02.06.2009, 16:58   #14
helavisa
Пользователь
 
Регистрация: 31.05.2009
Сообщений: 10
По умолчанию

бесполезно, теперь выделяет и молчит

Код:
*(*(b+i)+j)=(*min+*max)/2;
helavisa вне форума Ответить с цитированием
Старый 02.06.2009, 17:00   #15
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от helavisa
бесполезно, теперь выделяет и молчит
Что бесполезно? Что вы изменили? Что значит молчит?
Или я должен угадывать?

Описывайте проблему максимально подробно.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 02.06.2009, 17:13   #16
helavisa
Пользователь
 
Регистрация: 31.05.2009
Сообщений: 10
По умолчанию

делаю так
Код:
#include <stdio.h>
#include <malloc.h>
#include <math.h>

void vvod(double**);
void obrabotka(double**,int,int);
int main()
{
double **a,**b;
int v, w;
vvod(a);
obrabotka(a,b,v,w);
return 0;
}

void vvod(double **a)
{
double *max,*min;
int i,j,n=10,o=10,k,m,v,w;
FILE*Op;
Op= fopen("in0.txt","r");
a=(double**)calloc(n, sizeof(double*));
printf(" isxodnaya matrica\n");
for(i=0;i<n;i++){
*(a+i)=(double*)calloc(o,sizeof(double));
for(j=0;j<o;j++){
fscanf(Op,"%lf",&a[i][j]);
printf("%.1lf ", a[i][j]);
}
printf("\n");
}
return;
}

void obrabotka(double **a,double **b,int v,int w)
{
double *max,*min;
int k,m,i,j;
FILE* Ex = fopen("out1.txt","w");
v=10;
w=10;

b=(double**) calloc(w, sizeof(double*));
for(i=0;i<w;i++)
*(b+i)=(double*)calloc(v,sizeof(double));

i=0;
j=0;
printf(" result\n");
do{
for (k=0; k<10; k++)
  for (m=i; m<10; m++)
    if(max<(*(a+k)+m)) max=(*(a+k)+m);

for (k=j;k<=j && k<10; k++)
  for (m=0; m<10; m++)
    if(min>(*(a+k)+m)) min=(*(a+k)+m);

*(*(b+i)+j)=(*min+*max)/2;


printf("%.1f ", b[i][j]);
fprintf(Ex, "%.1f ",b[i][j]);

if(i>=9){
i=0;
j++;
}  else i++;
} while(j!=10);
return;
}
программка не запускается, а просто выделяет другим цветом строчку и не пишет какая ошибка
helavisa вне форума Ответить с цитированием
Старый 02.06.2009, 17:20   #17
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

У вас в заголовке функция принимает 3 аргумента:
Код:
void obrabotka(double**,int,int);
А вы ей даете 4
Код:
obrabotka(a,b,v,w);
Цитата:
и не пишет какая ошибка
Неужели? Что-то не верится. Почему же у меня пишет?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 02.06.2009, 17:27   #18
helavisa
Пользователь
 
Регистрация: 31.05.2009
Сообщений: 10
По умолчанию

теперь runtime error occurred вылазит, после добавления второго дабла, т.е. так
Код:
void obrabotka(double**,double**,int,int);
helavisa вне форума Ответить с цитированием
Старый 02.06.2009, 17:51   #19
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
#include <stdio.h>
#include <malloc.h>
#include <math.h>

void vvod(double***,int&,int&);
void obrabotka(double**,double**,int,int);

int main()
{
double **a,**b;
int v, w;
vvod(&a,v,w);
obrabotka(a,b,v,w);

for(int i=0; i<10; i++)
 {
  free(a[i]);
  free(b[i]);
 }
free(a);
free(b);
getchar();
return 0;
}

void vvod(double ***a, int &v, int &w)
{

int i,j,k,m;
v = 10;
w = 10;
FILE*Op;
Op= fopen("in0.txt","r");
*a=(double**)calloc(v, sizeof(double*));
 printf(" isxodnaya matrica\n");
 for(i=0;i<v;i++)
 {
 (*a)[i]=(double*)calloc(w,sizeof(double));
 for(j=0;j<w;j++)
  {
  fscanf(Op,"%lf",&(*a)[i][j]);
  printf("%.1lf ", (*a)[i][j]);
  }
 printf("\n");
 }
return;
}

void obrabotka(double **a,double **b,int v,int w)
{
double max,min;
int k,m,i,j;
FILE* Ex = fopen("out1.txt","w");

b=(double**) calloc(w, sizeof(double*));
for(i=0;i<w;i++)
 b[i]=(double*)calloc(v,sizeof(double));


max = -1000;
min = 1000;

printf(" result\n");
for(i=0; i<10; i++)
for(j=0; j<10; j++)
{
 for (k=0; k<10; k++)
  for (m=i; m<10; m++)
    if(max<a[k][m])
    max=a[k][m];

 for (k=j;k<=j && k<10; k++)
  for (m=0; m<10; m++)
    if(min>a[k][m]) min=a[k][m];

b[i][j]=(min+max)/2;


printf("%.1lf ", b[i][j]);
fprintf(Ex, "%.1lf ",b[i][j]);
}

return;
}
И разберитесь с переменными, хранящими размерность. То их в функцию посылаете, то вообще не пользуетесь..
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт неправильно работает aleksa76 JavaScript, Ajax 4 21.05.2008 17:47
неправильно выдаёт stringgrid chelsi Общие вопросы Delphi 3 30.04.2008 22:42
Неправильно умножаются матрицы!!! metamfetamin Помощь студентам 1 09.12.2007 20:37
Запрос неправильно работает... yulia БД в Delphi 0 27.05.2007 20:41