Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / перевод стат массива в динам / 10 сообщений из 10, страница 1 из 1
31.05.2017, 21:38
    #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
31.05.2017, 22:02
    #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
31.05.2017, 22:10
    #39463379
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перевод стат массива в динам
MugenLoliпрограмма корректна? ну хотя бы малость?

"Малость" - это очень хорошее слово. Уменьшать только что полученный от malloc указатель
это бред.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
31.05.2017, 22:26
    #39463384
MugenLoli
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перевод стат массива в динам
Dimitry Sibiryakov,
¯\_(ツ)_/¯ ну, прошу прощения, оправдаться мне нечем, знаний по этой (по всей) части нуль
...
Рейтинг: 0 / 0
31.05.2017, 22:38
    #39463392
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перевод стат массива в динам
MugenLoliDimitry Sibiryakov,
¯\_(ツ)_/¯ ну, прошу прощения, оправдаться мне нечем, знаний по этой (по всей) части нуль
http://people.toiit.sgu.ru/Sinelnikov/PT/C/Kern_Ritch.pdf
развивайся
...
Рейтинг: 0 / 0
01.06.2017, 05:27
    #39463457
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перевод стат массива в динам
MugenLoli, а действительно, зачем там декременты/инкременты указателей а и а[i]?
...
Рейтинг: 0 / 0
01.06.2017, 09:16
    #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
01.06.2017, 11:15
    #39463661
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
перевод стат массива в динам
условие задачи Дан двумерный массив из 5 строк и 6 столбцов. Определить, какой столбец массива имеет минимальную сумму элементов (считать, что столбцов с одинаковой суммой нет).; массив пользователь задает сам)

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

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

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


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


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