Как исправить ошибку - индификатор p неопределен - C (СИ)
Формулировка задачи:
Что нужно вписать чтобы он был определен
Листинг программы
- // вап.cpp: определяет точку входа для консольного приложения.
- //
- #include <stdio.h>
- #include "stdafx.h"
- #include <iostream>
- double ** Input(int rows, int cols) {
- double **p;
- p = (double**)malloc(rows * sizeof(double*));
- for (int i = 0; i<rows; i++) {
- p[i] = (double*)malloc(cols * sizeof(double));
- for (int j = 0; j < cols; j++)
- {
- printf("A[%d][%d]= ", i, j);
- scanf("%lf", &p[i][j]);
- }
- }
- return p;
- }
- double ** max(int m)
- {
- double max;
- double **p;
- max = p[0][m - 1]; //указывает что здесь ошибка
- for (int i = 0; ((m - 1) / 2) < i < m; i++)
- {
- for (int j = i; j < m; j++)
- {
- if (p[i][j] > max) { max = p[i][j]; }
- }
- }
- for (int j = 0; ((m - 1) / 2) < j < m; j++)
- {
- for (int i = m - 1 - j; i >= 0; i--)
- {
- if (p[i][j] > max) { max = p[i][j]; }
- }
- }
- printf("%8.4lf ", max);
- return p;
- }
- int main() {
- int m;
- double **f;
- double **mas;
- system("chcp 1251");
- system("cls");
- printf("Введите размерность квадратной матрицы: ");
- scanf("%d", &m);
- printf("Ввод матрицы А\n");
- mas = Input(m, m);
- printf("максимальное значение \n");
- f = max(m);
- getchar(); getchar();
- }
Решение задачи: «Как исправить ошибку - индификатор p неопределен»
textual
Листинг программы
- double max(double **p, int m)
- {
- double max = 0.0;
- max = p[0][m - 1]; //указывает что здесь ошибка
- for (int i = 0; ((m - 1) / 2) < i && i < m; i++)
- {
- for (int j = i; j < m; j++)
- {
- if (p[i][j] > max) { max = p[i][j]; }
- }
- }
- for (int j = 0; ((m - 1) / 2) < j && j < m; j++)
- {
- for (int i = m - 1 - j; i >= 0; i--)
- {
- if (p[i][j] > max) { max = p[i][j]; }
- }
- }
- return max;
- }
- int main() {
- int m;
- //double **f;
- double **mas;
- system("chcp 1251");
- system("cls");
- printf("Введите размерность квадратной матрицы: ");
- scanf("%d", &m);
- printf("Ввод матрицы А\n");
- mas = Input(m, m);
- printf("максимальное значение \n");
- //f = max(m);
- printf("%8.4lf ", max(mas, m));
- getchar(); getchar();
- }
Объяснение кода листинга программы
- p - указатель на массив указателей на double.
- m - целочисленная переменная, размерность матрицы.
- max - переменная типа double, инициализирована значением 0.0.
- p[0][m-1] - обращение к элементу матрицы по индексам, где m-1 - последний индекс строки.
- for (int i = 0; ((m-1) / 2) < i && i < m; i++) - цикл по индексам первой строки.
- for (int j = i; j < m; j++) - цикл по индексам столбцов.
- if (p[i][j] > max) { max = p[i][j]; } - сравнение текущего элемента с максимальным значением и обновление max при необходимости.
- for (int j = 0; ((m-1) / 2) < j && j < m; j++) - цикл по индексам последней строки.
- for (int i = m-1-j; i >= 0; i--) - цикл по индексам первой строки, начиная с последнего элемента.
- if (p[i][j] > max) { max = p[i][j]; } - сравнение текущего элемента с максимальным значением и обновление max при необходимости.
- printf(
%8.4lf
, max(mas, m)); - вывод максимального значения. - getchar(); getchar(); - пропуск двух символов новой строки после вывода.
- mas = Input(m, m) - вызов функции для ввода матрицы.
- printf(
максимальное значение \n
); - вывод заголовка. - main() - точка входа в программу.
- scanf(
%d
, &m) - ввод размерности матрицы. - printf(
Ввод матрицы А\n
); - вывод приглашения для ввода матрицы. - system(
chcp 1251
); - установка кодировки консоли. - system(
cls
); - очистка консоли. - getchar(); getchar(); - пропуск двух символов новой строки после вывода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д