С++,Двуменые массивы
Написать программу которая формирует двухмерный массив и считает сумму его элементов.
Стоимость программы будет где-то 100 USD
.Но можно почитать форум, посмотреть анологичные темы, выбрать из них нужное и написать самомостоятельно с пользой для себя и бесплатно.

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;
}
{
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;
}
Подскажите пожалуйста ,как создать двумерный динамический массив ,типа int используя iostream .
Можно ли поступить так как и с одномерным ??
Я имею ввиду как создать двумерный массив с неопределенным количеством элементов ,что я делаю неправильно ??
#include <iostream>
using namespace std;
int main ()
{
int n,m;
cin >> n>>m;
int *a =new int[n][m];
delete a;
}
Можно ли поступить так как и с одномерным ??
Я имею ввиду как создать двумерный массив с неопределенным количеством элементов ,что я делаю неправильно ??
#include <iostream>
using namespace std;
int main ()
{
int n,m;
cin >> n>>m;
int *a =new int[n][m];
delete a;
}
Двумерный массив можно рассматривать как массив массивов. Поэтому создать его можно так:
Код: Выделить всё
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; //Освобождаем память
Albor , огромное спасибо ,оригинальный способ ,я не знал ,что можно элементу одномерного массива присваивать целую стоку как у двумерного !!Еще раз спасибо !
kravazp писал(а):Albor , огромное спасибо ,оригинальный способ ,я не знал ,что можно элементу одномерного массива присваивать целую стоку как у двумерного !!Еще раз спасибо !
Что ты понимаешь под словами "присваивать целую строку"? Если имеется ввиду массив int-ов, то, в данном случае, в массиве содержатся адреса массивов.
Albor писал(а):Что ты понимаешь под словами "присваивать целую строку"? Если имеется ввиду массив int-ов, то, в данном случае, в массиве содержатся адреса массивов.
Да я понял ,и понял то, что мне нужно учить указатели ,и самому соображать ,я не зная указатели ,делаю динамические массивы ,и это не правильно !Я сейчас, начав изучать указатель, только понял сам смысл указателя ,а раньше по шаблону делал дин. массив .Так получается ,что один одномерный массив обращается к i-тым одномерным массивам ,используя их адрес ,и тем самым работает как двумерный ?
Двумерный массив - это массив указателей на вершины массивов, трехмерный - массив указателей на вершины масисивов указателй на верешины массивов и т.д. То есть любой многомерный массив - это ВСЕГДА одномерный массив указателей на вершины массиво с размерностью на единицу меньше. Определенеи рекурсивно в своеё основе, так как массивы рамерности на единицу меньше снова могут оказаться многомерными. Отсюда и делай выводы." писал(а):Подскажите пожалуйста ,как создать двумерный динамический массив ,типа int используя iostream .
Можно ли поступить так как и с одномерным ??
Я имею ввиду как создать двумерный массив с неопределенным количеством элементов ,что я делаю неправильно ??
#include <iostream>
using namespace std;
int main ()
{
int n,m;
cin >> n>>m;
int *a =new int[n][m];
delete a;
}
Задание: " вычислить максимальный элемент и поменять его местами с последним"
Ниже код. Нужна такая же, только с использованием функции. (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));
}
Заранее спасибо!
Ниже код. Нужна такая же, только с использованием функции. (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));
}
Заранее спасибо!