Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Задачка на создание двумерного массива / 10 сообщений из 10, страница 1 из 1
10.05.2013, 12:24
    #38253084
Сергей_1991
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка на создание двумерного массива
Добрый день! Подскажите пожалуйста как правильно создать двумерный массив [10000000][100]?
Вот код:
Код: 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.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
// 111111.cpp : Defines the entry point for the console application
#include "stdafx.h"
#include<iostream>
#include<iomanip>
#include<stdlib.h>
#include<ctime>
#include<fstream>
#include<conio.h>

using std::ofstream;

using std::endl;
using std::cout;
using std::cerr;
using std::ios;
using std::cin;

int main()
{   int row,i;
	cout<<"Vvedite kolichestvo stolbsov:";
	cin>>row;

	//Создание файла sort.sql в текстовом формате для печати
	ofstream basePrintFile("sort.sql", ios::out);
	if(!basePrintFile){
		cerr<<"Nevozmojno otkrit' file"<<endl;
		exit(1);
	}
	//Создание файла populate.sql в текстовом формате для печати
	ofstream insertPrintFile("populate.sql", ios::out);
	if(!insertPrintFile){
		cerr<<"Nevozmojno otkrit' file"<<endl;
		exit(1);
	}
int r[100000][3],x[10],y[10];// ВОТ ЗДЕСЬ НАДО СДЕЛАТЬ МАССИВ [10000000][100] КОТОРЫЙ БУДЕТ ИСПОЛЬЗОВАТЬСЯ НИЖЕ
	srand(time(0));
	basePrintFile<<"create database sort_a;"<<'\n'
		<<"use sort_a;"<<'\n'
		<<"create table data"<<'\n'
		<<"("<<'\n';
		//<<"id int unsigned not null auto_increment primary key,"<<'\n'
		for(int i=0;i<row;i++)
		{   basePrintFile<<"number"<<i<<" int(11) not null"<<",\n";
		     
		}
		basePrintFile<<");"<<'\n';

    insertPrintFile<<"USE sort_a;"<<'\n';
for (int i=0; i<100000; i++)
{	
	if (i%2)
	{
		insertPrintFile<<"INSERT INTO data (number_1,number_2,number_3,number_4,number_5) VALUES (";
		for(int j=0;j<row;j++)
	{
		
				r[i][j]=rand()%100000;
			if(j==row-1)
				insertPrintFile<<r[i][j];
			else
				insertPrintFile<<r[i][j]<<",";
			
	}
	
	
insertPrintFile<<");\n";

	}

	else {

	 insertPrintFile<<"INSERT INTO data VALUES (";
	insertPrintFile<<i<<",";
	for(int j=0;j<row;j++)
	{
		
				r[i][j]=rand()%100000;
			if(j==row-1)
				insertPrintFile<<r[i][j];
			else
				insertPrintFile<<r[i][j]<<",";
	}
	
	
insertPrintFile<<");\n";

		}
}  


return 0;
}
...
Рейтинг: 0 / 0
10.05.2013, 13:18
    #38253109
C++ Developer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка на создание двумерного массива
Сергей_1991,
Такой массив будет занимать около 4 гб оперативки, что для 32-битных процессов превышает допустимый предел. Я бы настоятельно рекомендовал работать с массивами гораздо меньших размеров, выгружая не используемые в данный момент гигабайты информации на диск.
...
Рейтинг: 0 / 0
10.05.2013, 17:46
    #38253241
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка на создание двумерного массива
Объявление так и будет:

int a[10000000][100];
...
Рейтинг: 0 / 0
10.05.2013, 18:25
    #38253279
Анатолий Широков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка на создание двумерного массива
2 MasterZiv,

у тебя что, чайные церемонии притупили чувство реальности? попробуй на стеке выделить 10000000x100x4 байт, учитывая, что стек выделяемый под thread по умолчанию в Windows 1Mb ( http://msdn.microsoft.com/en-us/library/windows/desktop/ms686774(v=vs.85).aspx).
...
Рейтинг: 0 / 0
10.05.2013, 18:44
    #38253289
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка на создание двумерного массива
Анатолий Широков,

Про это уже написали в топике.
Да, память большая, и её реально ОС не выделит.
Ни на стеке, ни глобально.
Но это от языка уже не зависит.
Человеку же надо было просто узнать, как объявлять двумерный массив.
...
Рейтинг: 0 / 0
10.05.2013, 18:49
    #38253293
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка на создание двумерного массива
Кстати, не такая и большая память. 3.8 гига. Может даже и выделиться, если сделать массив глобальным, а не автоматическим.
Попробую потом...
...
Рейтинг: 0 / 0
13.05.2013, 21:37
    #38255817
Сергей_1991
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка на создание двумерного массива
Всем большое спасибо за помощь
...
Рейтинг: 0 / 0
17.05.2013, 22:53
    #38262826
Станислав Вл.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка на создание двумерного массива
Как вариант отрефакторить до
Код: plaintext
1.
short a[10000000][100]; 
...
Рейтинг: 0 / 0
20.05.2013, 10:27
    #38264113
Кот Чеширский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка на создание двумерного массива
#include <stdio.h>

int sqlrucpp[10000000][100];

int main()
{
printf("размер массива: %ld\n", sizeof(sqlrucpp));
return 0;
}

Работает на ура.
PS Система Alt Linux 64 :)
...
Рейтинг: 0 / 0
21.05.2013, 00:41
    #38265397
Сергей_1991
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка на создание двумерного массива
Спасибо за помощь!
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Задачка на создание двумерного массива / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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