Динамическое выделения памяти под массив - C#
Формулировка задачи:
Доброе утро.
Прошу помощи!
Была программа на С++, переделывал на С#, и столкнулся с такой проблемой.
В C++ использовалось динамическое выделение памяти:
Но какой аналог в С#?
Если поможет, код на C++ и C#
C++:
C#:
Нужно заменить строчку 23 и 24.
Если ставить галочку и заключать в блок, то возникает другая проблема, с переобразованием int[] в int.
Буду благодарен за помощь!
int *a = new int[N];
// ConsoleApplication13.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> #include <ctime> using namespace std; void f(int n) { int count = 0; if (n<1) { cout<<n<<endl; return; } int* arr = new int[n]; int* arr1 = new int[n]; bool tf; int n1; int q; for (int i=0;i<n;i++) arr[i]= 1; while (n>1) { n1 = n; for (int i = 0;i < n-1; i++) { arr1[i]= arr[i]; cout<<arr1[i]<<'+'; } arr1[n-1]= arr[n-1]; count++; cout<<arr1[n-1]<<endl; tf = true; while (tf) { if (n1 < 3) break; tf = false; for (int i = n1-3; i > -1; i--) { if (arr1[i] >= arr1[i+1]+1) { tf = true; arr1[i+1]++; if (arr1[n1-1] - 1 < 1) n1--; else arr1[n1-1]--; for (int j = i + 2; j < n1; j++) { if ((arr1[j] - 1) > 0) { arr1[j]--; n1++; j--; } } //-out- for (int j=0;j<n1-1;j++) { cout<<arr1[j]<<'+'; } cout<<arr1[n1-1]<<endl; count++; i++; for (int j = i; j < n1 - 2; j++) { if (arr1[j] >= arr1[j+1]+1) { tf = true; arr1[j+1]++; if (arr1[n1-1] - 1 < 1) n1--; else arr1[n1-1]--; //-out- for (int j=0;j<n1-1;j++) { cout<<arr1[j]<<'+'; } cout<<arr1[n1-1]<<endl; count++; } else break; j++; } break; } } if (!tf) break; } n--; arr[0]++; } cout<<"all options: "<<count<<endl; } //------------ int _tmain(int argc, _TCHAR* argv[]) { int n; cout<<"input your number: "; cin>>n; f(n); system("pause"); return 0; }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void f(int n) { int count = 0; if (n < 1) { Console.WriteLine(n); return; } unsafe { int *arr = new int[n]; int *arr1 = new int[n]; } bool tf; int n1; for (int i = 0; i < n; i++) arr[i] = 1; while (n > 1) { n1 = n; for (int i = 0; i < n - 1; i++) { arr1[i] = arr[i]; Console.Write(arr1[i] + '+'); } arr1[n - 1] = arr[n - 1]; count++; Console.WriteLine(arr1[n - 1]); tf = true; while (tf) { if (n1 < 3) break; tf = false; for (int i = n1 - 3; i > -1; i--) { if (arr1[i] >= arr1[i + 1] + 1) { tf = true; arr1[i + 1]++; if (arr1[n1 - 1] - 1 < 1) n1--; else arr1[n1 - 1]--; for (int j = i + 2; j < n1; j++) { if ((arr1[j] - 1) > 0) { arr1[j]--; n1++; j--; } } //-out- for (int j = 0; j < n1 - 1; j++) { Console.Write(arr1[j] + '+'); } Console.WriteLine(arr1[n1 - 1]); count++; i++; for (int j = i; j < n1 - 2; j++) { if (arr1[j] >= arr1[j + 1] + 1) { tf = true; arr1[j + 1]++; if (arr1[n1 - 1] - 1 < 1) n1--; else arr1[n1 - 1]--; //-out- for (j = 0; j < n1 - 1; j++) { Console.Write(arr1[j] + '+'); } Console.WriteLine(arr1[n1 - 1]); count++; } else break; j++; } break; } } if (!tf) break; } n--; arr[0]++; } Console.WriteLine("all options: " + count); } //------------ static void Main(string[] args) { Console.WriteLine("input your number: "); int n = Console.Read(); f(n); Console.ReadLine(); } } }
Решение задачи: «Динамическое выделения памяти под массив»
textual
Листинг программы
int[] arr = new int[n]; int[] arr1 = new int[n];
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д