Как исправить ошибку - индификатор 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(); - пропуск двух символов новой строки после вывода.