Массивы, Указатели

Тема в разделе "C/C++/C#", создана пользователем krotman, 2 янв 2012.

  1. krotman

    krotman Гость

    Дана целочисленная квадратная матрица.
    Написать программу, выполняющую следующие действия в виде функций с динамическим распределением памяти.
    1) Для заданной матрицы размером 8 на 8 найти такие k, что k-ая строка матрицы совпадает с k-м столбцом.
    2) Найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент.

    Код (C++):
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <alloc.h>
    #define SIZE 3
    int** input()
    {
    int **a;
    int i,j;
    a=(int**)malloc(SIZE*sizeof(int*));
    for(i=0; i<SIZE; ++i)
    {
    a[i]=(int*)malloc(SIZE*sizeof(int));
    }
    printf("vvedite element matrici\n");
    for(i=0; i<SIZE; ++i)
    {
    for(j=0; j<SIZE; ++j)
    {
    printf("a[%d][%d]=",i+1,j+1);
    scanf("%d",&a[i][j]);
    }
    }
    return a;
    }
    void comp(int i)
    {int j;
    int **a;
    for (j=0;j<SIZE;j++)
    {if (a[i][j]!=a[j][i])return;
    printf("sovpadeni'a v %d stroke i stolbce\n",i+1);
    }}
    void sum(int i)
    {  int **a;
    int j, result=0, fex=0;
    for (j=0;j<SIZE;j++)
    {result+=a[i][j];
    if (a[i][j]<0) fex=1;
    }
    if (fex==1) printf("otricatel'ni element est' v stroke %d summa elementov= %d\n",i+1,result);
    }
    void out(int **a)
    {
    int i,j;
    printf("matrica\n");
    for(i=0; i<SIZE; ++i)
    {
    for(j=0; j<SIZE; ++j)
    printf("%8d",a[i][j]);
    printf("\n");
    }
    }
    int main()
    {
    clrscr();
    int **a= input();
    out(a);
    int i;
    for(i=0; i<SIZE; ++i)
    {
    comp(i);
    sum(i);
    free(a[i]);
    }
    free(a);
    getch();
    return 0;
    }
    вот мой текст программы, но работает с ошибкой(как я подозреваю функции sum, comp работают не с массивом который вводим с клавы, а скакимто левым массивом)
    Может кто исправить или хотябы влоб указать ощибки, ну или то и то сделать)
     
  2. workouter

    workouter Гость

    Корректно работают только две функции input() и out(). Функции sum() и comp() не работают по одной простой причине - для них не виден исходный массив. Если в функцию out передается адрес массива, то в функции sum() и comp() адрес массива не передаётся, а как работать с массивом, который не доступен. Вам необходимо разобраться с тем как работают функции. А именно, с областью действия функции в С++.
     
Загрузка...
Похожие Темы - Массивы Указатели
  1. filin94
    Ответов:
    1
    Просмотров:
    1.722
  2. Искушенный
    Ответов:
    0
    Просмотров:
    432
  3. Искушенный
    Ответов:
    1
    Просмотров:
    422
  4. Искушенный
    Ответов:
    1
    Просмотров:
    392
  5. Rpp
    Ответов:
    1
    Просмотров:
    812

Поделиться этой страницей