Форум программистов, компьютерный форум CyberForum.ru

Как выделить память? - C++

Восстановить пароль Регистрация
 
Praud
7 / 7 / 3
Регистрация: 25.02.2013
Сообщений: 233
07.12.2013, 13:02     Как выделить память? #1
Нужно заполнить треугольную матрицу вида
1 1 1
1 1 -
1 - -

На элементы с "-" память не должна выделяться.

Код
	A=(float**)malloc(n * sizeof(float*));
		if(A==NULL)
		{
			printf("Динамический массив не создан!");
			return 0;
		}

		int m=n;
		
//==================================================================
// Ввод треугольной матрицы
	printf("Введите элементы треугольной матрицы");
	for(int i=0;i<n;i++)
	{
		
		A[i]=(float *)malloc(n * sizeof(float*));
		if(A[i]==NULL)
			{
				printf("Динамический массив не создан!");
				return 0;
			}
	
			for(int j=0;j<m;j++)
		{		
			do
			{
			printf("\nA[%d][%d] = ", i+1, j+1);
			if(!scanf("%f", &A[i][j]))
			{
				system("cls");
				printf("Неверный ввод!\n");
				fflush(stdin);
				fl=1;
			}
			else
			{
				fl=0;
				if(A[i][j]==0)
					{
						printf("В матрице не должно быть нулей!:\n");
						fflush(stdin);
						j-=1;
					}
			}
			}while(fl==1);
		}
		m--;
	}
Вот мои нерабочие наработки

n- размерность матрицы (квадратная)
**А - матрица
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Praud
7 / 7 / 3
Регистрация: 25.02.2013
Сообщений: 233
07.12.2013, 13:20  [ТС]     Как выделить память? #2
Мне нужно использовать malloc\calloc в лабе.
OlegPL
5 / 5 / 0
Регистрация: 22.10.2013
Сообщений: 100
07.12.2013, 13:27     Как выделить память? #3
C++
1
2
3
4
5
int *triangle = new int*[3];
for(int i = 0, k = 3; i < 3; i++)
{
    triangle[i] = new int[k--];
}
и теперь просто заполнить его
Praud
7 / 7 / 3
Регистрация: 25.02.2013
Сообщений: 233
07.12.2013, 13:35  [ТС]     Как выделить память? #4
я еще раз говорю - оператор new нельзя использовать.
OlegPL
5 / 5 / 0
Регистрация: 22.10.2013
Сообщений: 100
07.12.2013, 13:37     Как выделить память? #5
Сделал полностью:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
 
int main ()
{
    int **triangle = new int*[3];
    for(int i = 0, k = 3; i < 3; i++)     // Выделение памяти
        triangle[i] = new int[k--];
 
    for(int i = 0, k = 3; i < 3; i++, k--)    // Заполнение
    {
        for(int j = 0; j < k; j++)
        {
            triangle[i][j] = 1;
            std::cout << triangle[i][j] << "  ";
        }
        std::cout << std::endl;
    }
 
    for(int i = 0; i < 3; i++)    // Удаление выделенной памяти
        delete [] triangle[i];
    delete [] triangle;
 
    return 0;
}
Жаль что new нельзя, с ним проще и нагляднее
Praud
7 / 7 / 3
Регистрация: 25.02.2013
Сообщений: 233
07.12.2013, 13:48  [ТС]     Как выделить память? #6
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
A=(float**)malloc(n * sizeof(float*));
        if(A==NULL)
        {
            printf("Динамический массив не создан!");
            return 0;
        }
        int k=n;
 
         for(int i = 0, k = n; i < n; i++)     // Выделение памяти
         {
            A[i] = (float *)malloc((k--) * sizeof(float*));
         } 
//==================================================================
// Ввод треугольной матрицы
    printf("Введите элементы треугольной матрицы");
    for(int i=0, k=n;i<n;i++,k--)
    {
        for(int j=0;j<k;j++)
        {       
            do
            {
            printf("\nA[%d][%d] = ", i+1, j+1);
            if(!scanf("%f", &A[i][j]))
            {
                system("cls");
                printf("Неверный ввод!\n");
                fflush(stdin);
                fl=1;
            }
            else
            {
                fl=0;
                if(A[i][j]==0)
                    {
                        printf("В матрице не должно быть нулей!:\n");
                        fflush(stdin);
                        j-=1;
                    }
            }
            }while(fl==1);
        }
    }
Написал вроде бы точно также, но оно не работает.
FAQEnD
 Аватар для FAQEnD
43 / 43 / 1
Регистрация: 15.12.2012
Сообщений: 88
07.12.2013, 14:12     Как выделить память? #7
Цитата Сообщение от Praud Посмотреть сообщение
Написал вроде бы точно также, но оно не работает.
Ну конечно не работает, ведь автор говорил:
Цитата Сообщение от Praud Посмотреть сообщение
Вот мои нерабочие наработки
Praud
7 / 7 / 3
Регистрация: 25.02.2013
Сообщений: 233
07.12.2013, 14:17  [ТС]     Как выделить память? #8
Цитата Сообщение от FAQEnD Посмотреть сообщение
Ну конечно не работает, ведь автор говорил:
Если бы вы были внимательней, то увидели бы, что первый код отличается от второго.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
07.12.2013, 14:26     Как выделить память? #9
Цитата Сообщение от Praud Посмотреть сообщение
но оно не работает.
как именно не работает? как должно работать?
FAQEnD
07.12.2013, 14:26
  #10

Не по теме:

Цитата Сообщение от Praud Посмотреть сообщение
Если бы вы были внимательней, то увидели бы, что первый код отличается от второго.
прошу прощения

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2013, 11:01     Как выделить память?
Еще ссылки по теме:

C++ Как выделить динамически память для данных класса
Как выделить память под динамический двумерный массив C++
C++ Как динамически выделить память для конструкторов класса?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Praud
7 / 7 / 3
Регистрация: 25.02.2013
Сообщений: 233
08.12.2013, 11:01  [ТС]     Как выделить память? #11
Цитата Сообщение от Jupiter Посмотреть сообщение
как именно не работает? как должно работать?
При заполнении матрицы
1 1 1
1 1
1

выходные данные

1 1 1
1 1 -4316...(мусор)
1 -4316...(мусор) -4316...(мусор)

должно быть

1 1 1
1 1 пусто
1 пусто пусто

Добавлено через 20 часов 18 минут
актуально....
Yandex
Объявления
08.12.2013, 11:01     Как выделить память?
Ответ Создать тему
Опции темы

Текущее время: 12:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru