powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / перевод стат массива в динам
10 сообщений из 10, страница 1 из 1
перевод стат массива в динам
    #39463370
MugenLoli
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что я сделал не так. Программа работает, в консоль выводит все правильно, но появляется ошибка. мне говорят, что дело в базовой индексации.
ConsoleApplication11.exe вызвал срабатывание точки останова.

Код: plaintext
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.
"ConsoleApplication11.exe" (Win32). Загружено "C:\Windows\SysWOW64\user32.dll". Невозможно найти или открыть PDB-файл.
"ConsoleApplication11.exe" (Win32). Загружено "C:\Windows\SysWOW64\gdi32.dll". Невозможно найти или открыть PDB-файл.
"ConsoleApplication11.exe" (Win32). Загружено "C:\Windows\SysWOW64\imm32.dll". Невозможно найти или открыть PDB-файл.
"ConsoleApplication11.exe" (Win32). Загружено "C:\Windows\SysWOW64\msctf.dll". Невозможно найти или открыть PDB-файл.
"ConsoleApplication11.exe" (Win32). Загружено "C:\Windows\SysWOW64\msvcrt.dll". Невозможно найти или открыть PDB-файл.
Debug Assertion Failed!

Program: ...\Projects\ConsoleApplication11\Debug\ConsoleApplication11.exe
File: f:\dd\vctools\crt\crtw32\misc\dbgheap.c
Line: 1322

Expression: _CrtIsValidHeapPointer(pUserData)

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)
"ConsoleApplication11.exe" (Win32). Загружено "C:\Windows\SysWOW64\uxtheme.dll". Невозможно найти или открыть PDB-файл.
"ConsoleApplication11.exe" (Win32). Загружено "C:\Windows\SysWOW64\combase.dll". Невозможно найти или открыть PDB-файл.
"ConsoleApplication11.exe" (Win32). Загружено "C:\Windows\SysWOW64\rpcrt4.dll". Невозможно найти или открыть PDB-файл.
"ConsoleApplication11.exe" (Win32). Загружено "C:\Windows\SysWOW64\sspicli.dll". Невозможно найти или открыть PDB-файл.
"ConsoleApplication11.exe" (Win32). Загружено "C:\Windows\SysWOW64\cryptbase.dll". Невозможно найти или открыть PDB-файл.
"ConsoleApplication11.exe" (Win32). Загружено "C:\Windows\SysWOW64\sechost.dll". Невозможно найти или открыть PDB-файл.
"ConsoleApplication11.exe" (Win32). Загружено "C:\Windows\SysWOW64\bcryptprimitives.dll". Невозможно найти или открыть PDB-файл.
"ConsoleApplication11.exe" (Win32). Загружено "C:\Program Files (x86)\Common Files\Microsoft Shared\Ink\tiptsf.dll". Невозможно найти или открыть PDB-файл.
"ConsoleApplication11.exe" (Win32). Загружено "C:\Windows\SysWOW64\oleaut32.dll". Невозможно найти или открыть PDB-файл.
"ConsoleApplication11.exe" (Win32). Загружено "C:\Windows\SysWOW64\dwmapi.dll". Невозможно найти или открыть PDB-файл.
"ConsoleApplication11.exe" (Win32). Загружено "C:\Windows\SysWOW64\ole32.dll". Невозможно найти или открыть PDB-файл.
"ConsoleApplication11.exe" (Win32). Загружено "C:\Windows\SysWOW64\kernel.appcore.dll". Невозможно найти или открыть PDB-файл.
"ConsoleApplication11.exe" (Win32). Загружено "C:\Windows\SysWOW64\oleacc.dll". Невозможно найти или открыть PDB-файл.
"ConsoleApplication11.exe" (Win32). Загружено "C:\Windows\SysWOW64\clbcatq.dll". Невозможно найти или открыть PDB-файл.
Программа "[6236] ConsoleApplication11.exe" завершилась с кодом 3 (0x3).

условие задачи Дан двумерный массив из 5 строк и 6 столбцов. Определить, какой столбец массива имеет минимальную сумму элементов (считать, что столбцов с одинаковой суммой нет).; массив пользователь задает сам)

Код: plaintext
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.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
#include "stdafx.h"
#include <iostream>
#include <time.h>
#include <string>
#include <locale>
#include <string.h>
#include <iomanip>
#include <iostream>
#include <cstdlib>


int _tmain(int argc, _TCHAR* argv[]){
	int pos = 0;
	setlocale(LC_ALL, "");
	srand(time(NULL));

	int min = INT_MAX;
	int sum = 0;
	const int n = 10;
	const int m = 10;
	int nn = 0, mm = 0;


	printf("Введите кол-во строк и столбцов \n");
	scanf("%d%d", &nn, &mm);
	while (nn <= 0 || mm <= 0 || nn > n || nn > m || mm > n || mm > m)
	{
		printf("Введите кол - во строк и столбцов \n");
		scanf("%d%d", &nn, &mm);
	}

	int **a = (int **)malloc(nn*sizeof(int*));
	//int **a = new int*[nn];
	for (int i = 0; i < nn; i++)
	{
		//a[i] = new int[nn];
		a[i] = (int*)malloc(nn*sizeof(int));
		a[i]--;
	}
	a--;

	for (int i = 1; i <= nn; i++)
		a[i]++;

	{
		for (int i = 1; i <= nn; i++){
		for (int j = 1; j <= mm; j++) 
			a[i][j] = rand() % 100;
		}
	}
	for (int i = 1; i <= nn; i++){
		{
			for (int j = 1; j <= mm; j++)
				printf("%d\t", a[i][j]);
			printf("\n");
		}
	}
	for (int j = 1; j <= mm; j++) {
		for (int i = 1; i <= nn; i++) {
			sum += a[i][j];
		}
		printf("%d ", sum);
		if (sum < min) { min = sum; pos = j; }
		sum = 0;
	}
	printf("\nСтолбец с минимальной суммой под номером %d", pos);

	for (int i = 1; i <= nn; i++)
	{
		a[i]++;
		free(a[i]);
		//delete[] A[i];
	}
	a++;
	free(a);

	//delete[] A;
	getchar(); getchar();
	return 0;
}
...
Рейтинг: 0 / 0
перевод стат массива в динам
    #39463377
MugenLoli
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
эмм...немножко поменял и вроде все ок. программа корректна? ну хотя бы малость?
Код: plaintext
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.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
#include "stdafx.h"
#include <iostream>
#include <time.h>
#include <string>
#include <locale>
#include <string.h>
#include <iomanip>
#include <iostream>
#include <cstdlib>


int _tmain(int argc, _TCHAR* argv[]){
	int pos = 0;
	setlocale(LC_ALL, "");
	srand(time(NULL));

	int min = INT_MAX;
	int sum = 0;
	const int n = 10;
	const int m = 10;
	int nn = 0, mm = 0;


	printf("Введите кол-во строк и столбцов \n");
	scanf("%d%d", &nn, &mm);
	while (nn <= 0 || mm <= 0 || nn > n || nn > m || mm > n || mm > m)
	{
		printf("Введите кол - во строк и столбцов \n");
		scanf("%d%d", &nn, &mm);
	}

	int **a = (int **)malloc(nn*sizeof(int*));
	//int **a = new int*[nn];
	for (int i = 0; i < nn; i++)
	{
		//a[i] = new int[nn];
		a[i] = (int*)malloc(mm*sizeof(int));
		a[i]--;
	}
	a--;

	

	{
		for (int i = 1; i <= nn; i++){
			for (int j = 1; j <= mm; j++)
				a[i][j] = rand() % 100;
		}
	}
	for (int i = 1; i <= nn; i++){
		{
			for (int j = 1; j <= mm; j++)
				printf("%d\t", a[i][j]);
			printf("\n");
		}
	}
	for (int j = 1; j <= mm; j++) {
		for (int i = 1; i <= nn; i++) {
			sum += a[i][j];
		}
		printf("%d ", sum);
		if (sum < min) { min = sum; pos = j; }
		sum = 0;
	}
	printf("\nСтолбец с минимальной суммой под номером %d", pos);

	for (int i = 1; i <= nn; i++)
	{
		a[i]++;
		free(a[i]);
		//delete[] A[i];
	}
	a++;
	free(a);
	getchar(); getchar();
	return 0;
}
...
Рейтинг: 0 / 0
перевод стат массива в динам
    #39463379
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MugenLoliпрограмма корректна? ну хотя бы малость?

"Малость" - это очень хорошее слово. Уменьшать только что полученный от malloc указатель
это бред.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
перевод стат массива в динам
    #39463384
MugenLoli
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
¯\_(ツ)_/¯ ну, прошу прощения, оправдаться мне нечем, знаний по этой (по всей) части нуль
...
Рейтинг: 0 / 0
перевод стат массива в динам
    #39463392
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MugenLoliDimitry Sibiryakov,
¯\_(ツ)_/¯ ну, прошу прощения, оправдаться мне нечем, знаний по этой (по всей) части нуль
http://people.toiit.sgu.ru/Sinelnikov/PT/C/Kern_Ritch.pdf
развивайся
...
Рейтинг: 0 / 0
перевод стат массива в динам
    #39463457
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MugenLoli, а действительно, зачем там декременты/инкременты указателей а и а[i]?
...
Рейтинг: 0 / 0
перевод стат массива в динам
    #39463534
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MugenLoli,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
printf("Введите кол-во строк и столбцов \n");
	scanf("%d%d", &nn, &mm);
	while (nn <= 0 || mm <= 0 || nn > n || nn > m || mm > n || mm > m)
	{
		printf("Введите кол - во строк и столбцов \n");
		scanf("%d%d", &nn, &mm);
	}



Цикл do ... while не учили?
...
Рейтинг: 0 / 0
перевод стат массива в динам
    #39463661
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
условие задачи Дан двумерный массив из 5 строк и 6 столбцов. Определить, какой столбец массива имеет минимальную сумму элементов (считать, что столбцов с одинаковой суммой нет).; массив пользователь задает сам)

Не понятно, зачем вообще тебе там понадобились динамические массивы.

А происходит вот что: ты создаешь не двумерный динамический массив, а массив указателей на одномерные массивы.
Многомерных динамических массивов в общем в С++ и нет (или я брежу ?).

Ты не умеешь работать с указателями и не понимаешь разницу между указателями и массивами, неправильно работаешь с выделенной памятью, и программа падает.
...
Рейтинг: 0 / 0
перевод стат массива в динам
    #39464208
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivМногомерных динамических массивов в общем в С++ и нетс указателем на одномерные массивы так-то можно работать как с двумерным массивом a[i][j], или что ты имел ввиду?
мне больше интересно, зачем там декременты и инкременты
...
Рейтинг: 0 / 0
перевод стат массива в динам
    #39464352
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbMasterZivМногомерных динамических массивов в общем в С++ и нетс указателем на одномерные массивы так-то можно работать как с двумерным массивом a[i][j]


Можно работать как с .... да.
Но от этого он многомерным массивом не становится.
О чём ярко свидетельствуют ошибки ТС-а.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / перевод стат массива в динам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]