гра с указателями (массивы указателей, массивы указателей на функции итд),
Да, плюсы де-факто стандарт компьютерной индустрии,
Я и подумал перейти на C#, т.к. он мне показался более логичным и лаконичным. Он проще и востребованней плюсов на рынке.
В общем, прошу совета, стоит ли сейчас все бросать и с 0 учить C#?
И кто на С# опытный, расскажите про них побольше пожалуйста, интересно узнать ваше мнение.
Ну и какой стек технологий необходимо знать хотя бы джуну.
#include <iostream>
int main()
{
// создается двухмерный массив 3 на 4 и тут же заполняется числами
int a[3][4] = { {1, 2, 3, 4} , {5, 6, 7, 8}, {9, 10, 11, 12}};
// вычисляем количество строк матрицы 3
int n = sizeof(a)/sizeof(a[0]);
// вычисляем количество столбцов матрицы 4
int m = sizeof(a[0])/sizeof(a[0][0]);
// устанавливаем в указатель *end адрес ячейки памяти последнего элемента массива
int *end = a[0] + n * m - 1;
// устанавливаем в указатель *ptr адрес ячейки памяти первого элемента массива (имеющего нулевой индекс)
// после этого последовательно перебираем все элементы массива и выводим их на экран.
// Что бы массив выводился на экран в виде матрицы завели переменную i для подсчета количества итераций
for(int *ptr=a[0], i=1; ptr <= end; ptr++, i++)
{
std::cout << *ptr << "\t";
// как только кол-во итераций стало кратно кол-ву столбцов то есть выведена целая строка переводим каретку на новую строку
if(i%m == 0)
{
std::cout << std::endl;
}
}
return 0;
Vector< Vector< double > >
подразумевается, что все числа положительныеиспользуй типизацию, а не подразумевай
int *arr = new int[count];в этой задаче максимально необходимый размер строки можно прикинуть и использовать статическую переменную
#include <iostream>
using namespace std;
void to_any_number_system(unsigned num, unsigned radix) {
// соблюдение условия 2 <= radix <= 16 на совести вызывающего
const char digits[] = "0123456789abcdef";
char buf[sizeof(num) * 8], *p = buf; // двоичное представление num влезет
do *p++ = digits[num % radix]; while (num /= radix);
do cout << *--p; while (p > buf);
cout << endl;
}
int main() {
unsigned n = 0xffffffff; // чтобы мало не казалось )
for (unsigned r = 2; r <= 16; r++) {
cout << (r > 9 ? "" : " ") << r << '\t';
to_any_number_system(n, r);
}
}
bool inArray(int* arr, int need, int count){
for(int i = 0; i < count; ++i)
if(arr[i] == need)
return true;
return false;
}
int* uniq(int* arr, int size, int& newSize){
int* localArr = new int[size]{0};
for(int i = 0; i < size; ++i){
if(inArray(localArr - newSize, arr[i], size))
continue;
++newSize;
*localArr++ = arr[i];
}
return localArr - newSize;
}
int main(){
int arr[10] = {1,2,3,4,2,4,5,6,7,4};
int newSize = 0;
int* newArr = uniq(arr, sizeof(arr)/sizeof(int), newSize);
for(int i = 0; i < newSize; ++i)
cout << newArr[i] << "\n";
}