Страница 1 из 2
С++,Двуменые массивы
Добавлено: 16 дек 2008, 20:51
BBC
Написать программу которая формирует двухмерный массив и считает сумму его элементов.
Re: С++,Двуменые массивы
Добавлено: 17 дек 2008, 07:11
Albor
Стоимость программы будет где-то 100 USD

.Но можно почитать форум, посмотреть анологичные темы, выбрать из них нужное и написать самомостоятельно с пользой для себя и бесплатно.
Re: С++,Двуменые массивы
Добавлено: 17 дек 2008, 18:07
Nuan
main()
{
int a[10][10];
randomize();
for(int i=0;i<10;i++)
for(imt j=0;j<10;j++)
a[j]=random(100);
int summa=0;
for(int i=0;i<10;i++)
for(imt j=0;j<10;j++)
summa+=a[j];
cout>>"SUMMA">>summa;
}
Re: С++,Двуменые массивы
Добавлено: 29 янв 2009, 00:07
kravazp
Подскажите пожалуйста ,как создать двумерный динамический массив ,типа int используя iostream .
Можно ли поступить так как и с одномерным ??
Я имею ввиду как создать двумерный массив с неопределенным количеством элементов ,что я делаю неправильно ??
#include <iostream>
using namespace std;
int main ()
{
int n,m;
cin >> n>>m;
int *a =new int[n][m];
delete a;
}
Re: С++,Двуменые массивы
Добавлено: 29 янв 2009, 11:52
Albor
Двумерный массив можно рассматривать как массив массивов. Поэтому создать его можно так:
Код: Выделить всё
int** pINT; //указатель на двумерный массив
int i,j; //размерности массива, важно показать что это не константы
i=3; //можно запросить у пользователя
j=5;
pINT=new int*[i]; //выделяем память под указатели
for(int k=0;k<i;k++) //выделяем память под значения
pINT[k]=new int[j];
pINT[0][0]=15; // используем массив
//---------------------
delete []pINT; //Освобождаем память
Re: С++,Двуменые массивы
Добавлено: 29 янв 2009, 15:59
kravazp
Albor , огромное спасибо ,оригинальный способ ,я не знал ,что можно элементу одномерного массива присваивать целую стоку как у двумерного !!Еще раз спасибо !
Re: С++,Двуменые массивы
Добавлено: 29 янв 2009, 16:40
Albor
kravazp писал(а):Albor , огромное спасибо ,оригинальный способ ,я не знал ,что можно элементу одномерного массива присваивать целую стоку как у двумерного !!Еще раз спасибо !
Что ты понимаешь под словами "присваивать целую строку"? Если имеется ввиду массив int-ов, то, в данном случае, в массиве содержатся адреса массивов.
Re: С++,Двуменые массивы
Добавлено: 29 янв 2009, 18:43
kravazp
Albor писал(а):Что ты понимаешь под словами "присваивать целую строку"? Если имеется ввиду массив int-ов, то, в данном случае, в массиве содержатся адреса массивов.
Да я понял ,и понял то, что мне нужно учить указатели ,и самому соображать ,я не зная указатели ,делаю динамические массивы ,и это не правильно !Я сейчас, начав изучать указатель, только понял сам смысл указателя ,а раньше по шаблону делал дин. массив .Так получается ,что один одномерный массив обращается к i-тым одномерным массивам ,используя их адрес ,и тем самым работает как двумерный ?
Re: С++,Двуменые массивы
Добавлено: 03 фев 2009, 10:17
atavin-ta
" писал(а):Подскажите пожалуйста ,как создать двумерный динамический массив ,типа int используя iostream .
Можно ли поступить так как и с одномерным ??
Я имею ввиду как создать двумерный массив с неопределенным количеством элементов ,что я делаю неправильно ??
#include <iostream>
using namespace std;
int main ()
{
int n,m;
cin >> n>>m;
int *a =new int[n][m];
delete a;
}
Двумерный массив - это массив указателей на вершины массивов, трехмерный - массив указателей на вершины масисивов указателй на верешины массивов и т.д. То есть любой многомерный массив - это ВСЕГДА одномерный массив указателей на вершины массиво с размерностью на единицу меньше. Определенеи рекурсивно в своеё основе, так как массивы рамерности на единицу меньше снова могут оказаться многомерными. Отсюда и делай выводы.
Re: С++,Двуменые массивы
Добавлено: 17 фев 2009, 23:44
Zazeek
Задание: " вычислить максимальный элемент и поменять его местами с последним"
Ниже код. Нужна такая же, только с использованием функции. (18 вещественных чисел)
Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float a[18];int i,max=0,imax;
for(i=0;i<18;i++)a=StrToFloat(Memo1->Lines->Strings);
max=a[0];imax=0;
for(i=1;i<18;i++)
if(a>max){max=a;imax=i;}
a[imax]=a[17];
a[17]=max;
Memo2->Clear();
for(i=0;i<18;i++)Memo2->Lines->Add(FloatToStr(a));
}
Заранее спасибо!