Не могу понять что я не так делаю. Из файла надо прочитать линейный массив и обработать его. Читаю в функции 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)