Не могу понять что я не так делаю. Из файла надо прочитать линейный массив и обработать его.
Читаю в функции readM, обрабатываю в matrix1. В ф-и main объявляю указатель на double и передаю его во все ф-и.
Печать в ф-и readM выдает правильные числа. В ф-и matrix или main бред получается:
#include <stdio.h>
//---------------------------------------------------------------------
bool readM(double *m, int *n){
FILE *f;
if ((f = fopen("input.txt", "r")) == NULL)
return false;
fscanf(f, "%i ", n); m = new double [*n]; //Первое число - количество элементов
printf("\nLength of mass: %i\n", *n);
for (int i = 0; i < *n; ++i){
fscanf(f, "%lf ", m+i); //Забиваю в линейный массив
printf("%6.2f ", m[i]);
}
printf("\n");
fclose(f);
}
//---------------------------------------------------------------------
bool matrix1(double *m, double **m1, int n, int *n2){
printf("\n\nPlease, input size of mass (height width): ");
scanf("%i %i", n2, n2+1); // 0-h, 1-w
int h = n2[0], w = n2[1];
printf("First matrix:\n");
for (int i = 0; i < n; ++i)
printf("m[%i] = %6.2f; ", i, m[i]); //Печатаю линейный массив, и уже лезет бред
printf("\nSecond matrix %ix%i:\n", h, w);
double buf; //Здесь начинается обработка массива. Можете пропустить
bool was = false;
m1 = new double * [h];
for (int i = 0; i < h; ++i)
m1[i] = new double [w];
for (int i = 0, k=0; i < h; ++i)
for (int j = 0; j < w; ++j, ++k){
//if (k < n){
// m1[i][j] = m[k]; printf ("\n %f", *(m+k)); }
m1[i][j] = m[i];
printf("m[%i] = %d; ", i, m[i]);
/* else
if (was){
m1[i][j] = buf;
buf+=1;
}
else{
was = true;
buf = m[k];
}*/
}
for (int i = 0; i < h; ++i){
for (int j = 0; j < w; ++j)
printf("(%f) ", m1[i][j]);
printf("\n");
}
printf("\n OK! \n");
}
//---------------------------------------------------------------------
bool matrix2(double **m1, double **m2){
}
//---------------------------------------------------------------------
int main(){
double *m, **m1, **m2;
int n, *n2 = new int [2];
if (!readM(m, &n)){
printf("\nFile \"input.txt\" not open!\n");
return -1;
}
printf("\nMatrix again:\n");
for (int i = 0; i < n; ++i)
printf("%6.2f ", m[i]); //Тоже бред
matrix1(m, m1, n, n2);
return 0;
}
Ответ на:
комментарий
от io
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум лаба по C++ (2005)
- Форум Функция, меняющая тип возвращаемого значения в зависимости от переменной C++ (2015)
- Форум Интересно! (2004)
- Форум g++ expects argument (2013)
- Форум Qt под win, линкер выдает ошибки (2007)
- Форум Программа на Си падает, при выделении памяти (2014)
- Форум Поле типа unique_ptr и деструктор (2019)
- Форум QTcpServer: No such slot (2014)
- Форум Проблема с чтением wav файла? (2022)
- Форум Красно-чёрное дерево. Потеря связности блоков памяти (2024)