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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2009, 16:53   #1
nosuchathing
 
Регистрация: 13.01.2009
Сообщений: 6
Смущение размер массива

Добрый день! подскажите, пожалуйста, почему не получается сделать массив a[i] в данном коде достаточно большим (до 1000 элементов, хотя бы).

переменные задала так:

PHP код:
  int i=0bcnk;
   
float de;
   
int q;
   
float a[q]; 
массивчик заполняла так:

PHP код:
  for (i=i<; ++i
  
a[i] = (rand()*(d-e))/RAND_MAX+e
при q=100 все работает, но надо большее число

тот же вопрос про размерность, но с небольшими изменениями (двумерный массив) - пытаюсь сделать матрицу i на j стольбцов и много строк (опять надо элементов хотя бы 1000- задается t)

PHP код:
float x[10][t]; 
PHP код:
 for (int i 0;10;i++)
   for (
int j 0<(t/10); j++)
      
x[i][j] =(rand()*(d-e))/RAND_MAX+e;
    for (
i=0;i<10;i++)
      {
      for (
int j 0;<(t/10); j++)
      
fprintf(fp2,"%.2f ",x[i][j]);
      
fprintf(fp2,"\n");
      } 
Да, и напоследок, чтобы добить своей глупостью, видимо, хочу еще спросить: вот отправляю я матрицу в файл (без расширения), открываю его и... не могу вставить в ексель - никак... почему? (надеюсь, это не совсем риторический вопрос)

Заранее благодарю за помощь
nosuchathing вне форума Ответить с цитированием
Старый 14.01.2009, 17:20   #2
alexov
Пользователь
 
Регистрация: 31.10.2008
Сообщений: 61
По умолчанию

1)
Код:
#include <iostream>
#include <time.h>
using namespace std;

int main()
{
	srand(time(0));
	const int n=1000;
	int a[n];
for(int i=0; i<n; i++)
{
a[i]=rand()%10;
cout<<a[i]<<" ";
}
	system("pause");
}
2)
Код:
#include <iostream>
using namespace std;

int main()
{
	const int m=1000;
	const int n=10;
	int a[n][m];
for(int i=0; i<n; i++)
{
	for(int j=0; j<m; j++)
	{
		a[i][j]=rand()%10;
	cout<<" "<<a[i][j];
	}
}
cout<<endl;
	system("pause");
}
!Help Win Api!
alexov вне форума Ответить с цитированием
Старый 14.01.2009, 17:29   #3
nosuchathing
 
Регистрация: 13.01.2009
Сообщений: 6
По умолчанию

Спасибо за ответ.
а на последний вопрос вы бы мне не ответили?
показываю на пальцах: вот создала я массивчик в первом случае (в моем коде a[i]), и каждое это a[i] я впечатываю в файл в столбик. Потом я беру этот столбик и он спокойно делается копипастом столбиком в екселе. а если я создаю матрицу как во втором случае, то она в ексель уже в виде таблицы не копируется...
Впрочем, даже если не ответите - то уже огромное спасибо)
nosuchathing вне форума Ответить с цитированием
Старый 14.01.2009, 19:54   #4
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Дело в том, что столбик в файле он и есть столбик. Если он один. А если два столбика - как в матрице, то представление идет не как два столбика, а как один, только в котором через пробел два числа. Так что никак не сделаете. Только разве что написать программу, которая сама матрицу в эксель таблицу пишет.
Посмотрите вот тут. Может поможет вам.
MaTBeu вне форума Ответить с цитированием
Старый 15.01.2009, 09:22   #5
nosuchathing
 
Регистрация: 13.01.2009
Сообщений: 6
По умолчанию

Цитата:
Сообщение от alexov Посмотреть сообщение
1)
Код:
#include <iostream>
using namespace std;

int main()
{
	const int m=1000;
	const int n=10;
	int a[n][m];
for(int i=0; i<n; i++)
{
	for(int j=0; j<m; j++)
	{
		a[i][j]=rand()%10;
	cout<<" "<<a[i][j];
	}
}
cout<<endl;
	system("pause");
}
к сожалению, при частичном изменении кода - не работает, если хочу задавать н и м с клавиатуры (сканфом) - чтобы пользователь сам вводил размер матрицы (при маленьких числах работает, при больших - нет).

спасибо за ответ про ексель. поняла для себя - не буду мучиться, буду делать один столбик))
nosuchathing вне форума Ответить с цитированием
Старый 15.01.2009, 11:18   #6
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Делайте динамическое выделение памяти.
Код:
int **a;
int m, n;
cout<<"Enter n:  ";
cin>>n;
cout<<"\nEnter m:  ";
cin>>m;
a = new int*[n];
for(int i=0; i<n; i++)
   a[i] = new int[m];
Дальше работаете как с обычным массивом (матрицей).
MaTBeu вне форума Ответить с цитированием
Старый 15.01.2009, 11:40   #7
nosuchathing
 
Регистрация: 13.01.2009
Сообщений: 6
По умолчанию

Да, спасибо, это то, что надо)
nosuchathing вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
максимальный размер массива в 32-битной оси Adamant Свободное общение 5 03.12.2008 21:14
Размер Image изменяется на размер картинки, а сама она рисуется на области первой картинки RPGer Мультимедиа в Delphi 6 20.10.2008 19:54
Размер массива в Delphi simple_Pro Помощь студентам 2 11.05.2008 09:15
переписать из массива в линейный двунаправленный список чётные элементы массива Black_Ak24 Помощь студентам 12 08.01.2008 00:44
Как узнать размер массива мандарин Общие вопросы Delphi 2 30.05.2007 19:18