Как исправить ошибку - индификатор p неопределен - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Что нужно вписать чтобы он был определен
Листинг программы
  1. // вап.cpp: определяет точку входа для консольного приложения.
  2. //
  3. #include <stdio.h>
  4. #include "stdafx.h"
  5. #include <iostream>
  6. double ** Input(int rows, int cols) {
  7. double **p;
  8. p = (double**)malloc(rows * sizeof(double*));
  9. for (int i = 0; i<rows; i++) {
  10. p[i] = (double*)malloc(cols * sizeof(double));
  11. for (int j = 0; j < cols; j++)
  12. {
  13. printf("A[%d][%d]= ", i, j);
  14. scanf("%lf", &p[i][j]);
  15. }
  16. }
  17. return p;
  18. }
  19. double ** max(int m)
  20. {
  21. double max;
  22. double **p;
  23. max = p[0][m - 1]; //указывает что здесь ошибка
  24. for (int i = 0; ((m - 1) / 2) < i < m; i++)
  25. {
  26. for (int j = i; j < m; j++)
  27. {
  28. if (p[i][j] > max) { max = p[i][j]; }
  29. }
  30. }
  31. for (int j = 0; ((m - 1) / 2) < j < m; j++)
  32. {
  33. for (int i = m - 1 - j; i >= 0; i--)
  34. {
  35. if (p[i][j] > max) { max = p[i][j]; }
  36. }
  37. }
  38. printf("%8.4lf ", max);
  39. return p;
  40. }
  41. int main() {
  42. int m;
  43. double **f;
  44. double **mas;
  45. system("chcp 1251");
  46. system("cls");
  47. printf("Введите размерность квадратной матрицы: ");
  48. scanf("%d", &m);
  49. printf("Ввод матрицы А\n");
  50. mas = Input(m, m);
  51. printf("максимальное значение \n");
  52. f = max(m);
  53. getchar(); getchar();
  54. }

Решение задачи: «Как исправить ошибку - индификатор p неопределен»

textual
Листинг программы
  1. double max(double **p, int m)
  2. {
  3.     double max = 0.0;
  4.  
  5.     max = p[0][m - 1]; //указывает что здесь ошибка
  6.     for (int i = 0; ((m - 1) / 2) < i && i < m; i++)
  7.     {
  8.         for (int j = i; j < m; j++)
  9.         {
  10.             if (p[i][j] > max) { max = p[i][j]; }
  11.         }
  12.     }
  13.     for (int j = 0; ((m - 1) / 2) < j && j < m; j++)
  14.     {
  15.         for (int i = m - 1 - j; i >= 0; i--)
  16.         {
  17.             if (p[i][j] > max) { max = p[i][j]; }
  18.         }
  19.     }
  20.     return max;
  21. }
  22.  
  23. int main() {
  24.     int m;
  25.     //double **f;
  26.     double **mas;
  27.     system("chcp 1251");
  28.     system("cls");
  29.     printf("Введите размерность квадратной матрицы: ");
  30.     scanf("%d", &m);
  31.     printf("Ввод матрицы А\n");
  32.     mas = Input(m, m);
  33.     printf("максимальное значение \n");
  34.     //f = max(m);
  35.     printf("%8.4lf ", max(mas, m));
  36.     getchar(); getchar();
  37. }

Объяснение кода листинга программы

  1. p - указатель на массив указателей на double.
  2. m - целочисленная переменная, размерность матрицы.
  3. max - переменная типа double, инициализирована значением 0.0.
  4. p[0][m-1] - обращение к элементу матрицы по индексам, где m-1 - последний индекс строки.
  5. for (int i = 0; ((m-1) / 2) < i && i < m; i++) - цикл по индексам первой строки.
  6. for (int j = i; j < m; j++) - цикл по индексам столбцов.
  7. if (p[i][j] > max) { max = p[i][j]; } - сравнение текущего элемента с максимальным значением и обновление max при необходимости.
  8. for (int j = 0; ((m-1) / 2) < j && j < m; j++) - цикл по индексам последней строки.
  9. for (int i = m-1-j; i >= 0; i--) - цикл по индексам первой строки, начиная с последнего элемента.
  10. if (p[i][j] > max) { max = p[i][j]; } - сравнение текущего элемента с максимальным значением и обновление max при необходимости.
  11. printf(%8.4lf, max(mas, m)); - вывод максимального значения.
  12. getchar(); getchar(); - пропуск двух символов новой строки после вывода.
  13. mas = Input(m, m) - вызов функции для ввода матрицы.
  14. printf(максимальное значение \n); - вывод заголовка.
  15. main() - точка входа в программу.
  16. scanf(%d, &m) - ввод размерности матрицы.
  17. printf(Ввод матрицы А\n); - вывод приглашения для ввода матрицы.
  18. system(chcp 1251); - установка кодировки консоли.
  19. system(cls); - очистка консоли.
  20. getchar(); getchar(); - пропуск двух символов новой строки после вывода.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы