Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2023, 16:29   #1
Dimian
 
Регистрация: 22.01.2023
Сообщений: 5
Восклицание Программа с модулем, содержащим функции над динамическими массивами

Задача. Программа с модулем, содержащим функции над динамическими массивами. Напишите программу, работающую с динамическими одномерными и двумерными массивами. Проект должен содержать файлы: main.c, TabliceDyn.h, TabliceDyn.c. В файлах ArrayDyn.h и ArrayDyn.c поместите объявления и определения функций что позволяют: • создавать, отображать и удалять одномерный динамический массив вещественных чисел, • создавать и отображать двумерный динамический массив вещественных чисел. В файле main.c проверьте написанные функции.

//TabliceDyn.h

Код:
#ifndef RABLICEDYN_H_INCLUDED
#define TABLICEDYN_H_INCLUDED

float ** StMass(int n,int m);
void WywMass(float **A,int n, int m);//Wydrukuj tablicę do konsoli
void WydalMass(float **A,int n);//usunięcie tablicy
#endif // TABLICEDYN_H_INCLUDED

//ArrayDyn.h

Код:
#ifndef ARRAYDYN_H_INCLUDED
#define ARRAYDYN_H_INCLUDED

float * CreateArray(int n);
void PrintArray(float A[],int n);
void DeleteArray(float *A);

#endif // ARRAYDYN_H_INCLUDED
//ArrayDyn.c

Код:
#include <stdio.h>
#include <stdlib.h>
#include "ArrayDyn.h"

float * CreateArray(int n)
{
    float *A = (float*) malloc (sizeof (float)*n);
    for (int i=0;i<n;i++)
    {
        A[i] = (float) (rand()%100)/10;
    }
    return A;
}

void PrintArray(float A[],int n) 
{
    for (int i=0;i<n;i++)
    {
        printf("%.2f\t",A[i]);
    }
    printf("\n");
}
void DeleteArray(float *A) 
{
    free(A);
}
//TabliceDyn.c


Код:
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
#include "TabliceDyn.h"

float ** StMass(int n,int m)
{

    float ** A = (float**) malloc (sizeof (float*)*n);
    for (int i=0;i<n;i++)
    {
        A[i] = (float*) malloc (sizeof (float)*n);
        for (int j=0;j<m;j++)
        {
            A[i][j] = (float) (rand()%100)/10;
        }
    }
    return A;
}
void WywMass(float ** A,int n,const int m)
{
    for (int i=0;i<n;i++)
    {
        for (int j=0;j<m;j++)
        {
            printf("%.2f\t",A[i][j]);
        }
        printf("\n");
    }
}
void WydalMass(float **A,int n)//удаление таблицы
{
    for (int i=0;i<n;i++)
    {
        free(A[i]);
    }
    free(A);
}
//main.c

Код:
#include <stdio.h>
#include <stdlib.h>
#include "ArrayDyn.h"
#include "TabliceDyn.h"


int main()
{
    int n;
    int m;
    
    printf("Podaj n:\n");
    scanf("%d", &n);
    printf("Podaj m(taka sama jak n):\n");
    scanf("%d", &m);
    
    float *A = CreateArray(n);// Создайте новый массив и заполните его произвольными числами
    PrintArray(A,n);//Вывести массив в консоль
    DeleteArray(A);//удаление таблицы
    printf("\nElement tablicy po usunięciu tablicy: %.2f\n",A[0]);// давайте получим элемент массива после удаления массива
    
    
    float **M = StMass(n,m);// Создайте новый массив и заполните его произвольными числами
    WywMass(M,n,m);//Вывести массив в консоль
    WydalMass(M,n);//usunięcie tablicy
    printf("\nElement tablicy po usunięciu tablicy: %.2f\n\n",M[0][0]);// давайте получим элемент массива после удаления массива
    return 0;
    
}

Выдаёт ошибку:

[Error] Id returned 1 exit status

Подскажите пожалуйста как исправить?
Изображения
Тип файла: jpg img_problem.jpg (99.7 Кб, 9 просмотров)
Dimian вне форума Ответить с цитированием
Старый 28.01.2023, 19:56   #2
maks1331
Форумчанин
 
Аватар для maks1331
 
Регистрация: 20.12.2016
Сообщений: 270
По умолчанию

Судя по ошибкам undefined reference, вам надо настроить компиляцию cpp файлов в проекте, на этапе линковки компилятор их не находит.
формошлеп.рф
witech.su
maks1331 вне форума Ответить с цитированием
Старый 05.02.2023, 02:30   #3
Пётр Седов
Форумчанин
 
Регистрация: 26.10.2022
Сообщений: 119
По умолчанию

Цитата:
Сообщение от Dimian Посмотреть сообщение
Код:
#ifndef RABLICEDYN_H_INCLUDED
#define TABLICEDYN_H_INCLUDED
Здесь имена должны быть одинаковые.
Цитата:
Сообщение от Dimian Посмотреть сообщение
Код:
float ** StMass(int n,int m)
{

    float ** A = (float**) malloc (sizeof (float*)*n);
    for (int i=0;i<n;i++)
    {
        A[i] = (float*) malloc (sizeof (float)*n);
        for (int j=0;j<m;j++)
        {
            A[i][j] = (float) (rand()%100)/10;
        }
    }
    return A;
}
Во втором malloc-е нужен m.
Цитата:
Сообщение от Dimian Посмотреть сообщение
Код:
    DeleteArray(A);//удаление таблицы
    printf("\nElement tablicy po usunięciu tablicy: %.2f\n",A[0]);// давайте получим элемент массива после удаления массива
Зачем?
Цитата:
Сообщение от Dimian Посмотреть сообщение
Код:
    WydalMass(M,n);//usunięcie tablicy
    printf("\nElement tablicy po usunięciu tablicy: %.2f\n\n",M[0][0]);// давайте получим элемент массива после удаления массива
После free(M), содержимое массива указателей может быть затёрто, в том числе первый указатель (M[0]), поэтому индексировать его нельзя.
Пётр Седов вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать класс для работы с одномерными динамическими массивами значений типа unsigned int. Предусмотреть функции класса для выполнения таких операций Falcome Помощь студентам 0 10.05.2020 16:54
С++ Работа с динамическими массивами Antihaos Помощь студентам 2 22.09.2015 12:32
Функции для работы с динамическими массивами iiunbreakableii Общие вопросы Delphi 8 17.07.2012 14:04
Задача с динамическими массивами _grusha_ Помощь студентам 2 22.04.2009 19:46