Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 25.10.2020
Сообщений: 168

Портировать с Плюсов на Шарп

20.11.2021, 13:40. Показов 671. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#define Debug
#include <iostream>
using namespace std;
 
#ifndef Debug
#define MyAssert(x)
 
#else
#define MyAssert(x) 
if (! (x)) cout << "ERROR!! Assert " << #x << " failed" << endl 
                   << " on line " << __LINE__ << endl << " in file " <<  FILE  << endl;
 
#endif
 
 
void main()
{
    int a = 3, b = 4, x = 5;
    cout << a + b << endl;
    cout << b - a << endl;
    MyAssert(x != 5);
 
    system("pause");
}
Добавлено через 5 минут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace MyAssert
{
#define Debug
 
#ifndef Debug
#define MyAssert(x)
 
#else
#define MyAssert(x) 
if (! (x)) Console.WriteLine($"ERROR!! Assert:#x { failed} << { on line } __LINE__ { in file } FILE;
 
#endif
 
 
void main()
    {
        int a = 3, b = 4, x = 5;
        Console.WriteLine("a + b");
        Console.WriteLine("b - a");
        MyAssert(x != 5);
 
        system("pause");
    }
}
Вот что у меня получилось
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.11.2021, 13:40
Ответы с готовыми решениями:

Код Плюсов портировать в Шарп
#include &quot;iostream.h&quot; int sum_dig(char *s) { int ss=0; while (*s != 0) { ss=ss+(*s++)-'0'; ...

Портировать с Плюсов на Шарп код открывающий файл по его имени
Это решение на с++, можете или приблизительное решение на с# написать Напишите программу, которая принимает параметр – имя текстового...

Портировать с Плюсов на Шарп код: Ввод-вывод ФИО, возраста, веса в массив
Введите ФИО, возраст, вес одной строкой в символьный массив и затем в программе получите отдельные переменные и выведите их на экран....

12
Злой няш
 Аватар для I2um1
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
20.11.2021, 13:51
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
using System.Diagnostics;
using System.Runtime.CompilerServices;
 
int a = 3, b = 4, x = 5;
Console.WriteLine(a + b);
Console.WriteLine(b - a);
MyAssert(x != 5);
 
[Conditional("DEBUG")]
static void MyAssert(
    bool x,
    [CallerArgumentExpression("x")] string message = null,
    [CallerFilePath] string sourceFilePath = "",
    [CallerLineNumber] int sourceLineNumber = 0)
{
    if (!x)
    {
        Console.WriteLine($"ERROR!! Assert {message} failed");
        Console.WriteLine($" on line {sourceLineNumber} in file {sourceFilePath}");
    }
}
0
0 / 0 / 0
Регистрация: 25.10.2020
Сообщений: 168
20.11.2021, 14:03  [ТС]
А как это сделать для этой задачи, они немного похожи
Напишите макрос DPrint , проверяющий наличие режима отладки, и если режим отладки определен, печатающий имя и значение, передаваемое в качестве параметра.
0
Злой няш
 Аватар для I2um1
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
20.11.2021, 14:13
asdgF333, на C# нет макросов. Задачу можно решить с помощью инкрементального Source Generator v2 или PostSharp. Приблизительно похожее можно сделать так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;
using System.Diagnostics;
using System.Runtime.CompilerServices;
 
DPrint("hi");
 
var test = "some";
DPrint(test);
 
[Conditional("DEBUG")]
static void DPrint<T>(
    T value,
    [CallerArgumentExpression("value")] string name = "")
{
    Console.WriteLine($"{name}: {value}");
}
0
0 / 0 / 0
Регистрация: 25.10.2020
Сообщений: 168
20.11.2021, 14:26  [ТС]
Можно ли некоторые из этих задач написать на C#:
1.Измените ранее разработанный класс на класс внутри пространства имен.
2.Напишите главную программу, создающую и обрабатывающую объект этого класса, используя различные варианты подключения пространства имен.
3.Создайте многомодульный проект с двумя узлами : главный модуль и модуль класса.
4.Создайте проект для создания библиотеки классов из модуля класса.
5.Создайте многомодульный проект с двумя узлами : главный модуль и библиотека класса.
Вроде как на C# нет пространство имен и библиотеки или я что-то путаю с библиотеками.
0
Злой няш
 Аватар для I2um1
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
20.11.2021, 14:38
- на C# у всех классов есть пространство имен, даже если оно явно не задано
- пространства имен на C# не подключаются
- модулей на C# нет (сборка - это не модуль)
Пусть сочинитель задания переведет его на термины C#.
0
0 / 0 / 0
Регистрация: 25.10.2020
Сообщений: 168
20.11.2021, 14:41  [ТС]
К 1 заданию я написала такой код
using Base; // подключение пространства имен Base

Person tom = new("Tom");
tom.Print(); // Имя: Tom

namespace Base
{
class Person
{
string name;
public Person(string name) => this.name = name;
public void Print() => Console.WriteLine($"Имя: {name}");
}
}
Как это снова написать так чтобы оно соответствовала 2 заданию
2.Напишите главную программу, создающую и обрабатывающую объект этого класса, используя различные варианты подключения пространства имен.
0
Злой няш
 Аватар для I2um1
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
20.11.2021, 14:50
Цитата Сообщение от asdgF333 Посмотреть сообщение
using Base; // подключение пространства имен Base
Цитата Сообщение от I2um1 Посмотреть сообщение
- пространства имен на C# не подключаются

1. В другом C# файле написать:
C#
1
global using Base;
2. Заменить на алиас:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using Person = Base.Person;
 
Person tom = new("Tom");
tom.Print();
 
namespace Base
{
    class Person
    {
        string name;
        public Person(string name) => this.name = name;
        public void Print() => Console.WriteLine($"Имя: {name}");
    }
}
3. Не использовать using:
C#
1
2
3
4
5
6
7
8
9
10
11
12
Base.Person tom = new("Tom");
tom.Print();
 
namespace Base
{
    class Person
    {
        string name;
        public Person(string name) => this.name = name;
        public void Print() => Console.WriteLine($"Имя: {name}");
    }
}
4. Еще вот так можно:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using global::Base;
 
Person tom = new("Tom");
tom.Print();
 
namespace Base
{
    class Person
    {
        string name;
        public Person(string name) => this.name = name;
        public void Print() => Console.WriteLine($"Имя: {name}");
    }
}
Добавлено через 37 секунд
5. Еще в csproj можно глобальный using добавить.

Добавлено через 14 секунд
6. Или алиас в csproj.
0
0 / 0 / 0
Регистрация: 25.10.2020
Сообщений: 168
20.11.2021, 15:00  [ТС]
Что такое алиас?
0
Злой няш
 Аватар для I2um1
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
20.11.2021, 15:07
asdgF333, алиас - это синоним пространству имен + сущности:
C#
1
using Person = Base.Person;
Я Person назвал слева как Person, но мне ничего не мешает назвать как душе угодно или объявить алиас, но использовать Base.Person вместо него.

Добавлено через 2 минуты
И раз уж на то пошло, можно еще открывать все публичные статические методы класса:
C#
1
using static Base.Person;
Добавлено через 1 минуту
Ну или публичные статические поля/свойства/...
0
0 / 0 / 0
Регистрация: 25.10.2020
Сообщений: 168
20.11.2021, 15:46  [ТС]
Используя готовый шаблонный класс Array и ранее разработанные классы объектов, напишите программу в которой в цикле создайте списки объектов типа double, Student, Worker, Pencil, Cat и затем распечатайте их на на экране.
А можно ли шаблоны создавать в C# или есть готовый шаблонный класса Array.

Добавлено через 29 минут
Шаблон я нашла, но вот цикл и как его туда добавить не поняла.
0
Злой няш
 Аватар для I2um1
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
20.11.2021, 15:49
asdgF333, нет шаблонов на C#, как и discriminated union. Близки только generic types (generics):
C#
1
2
3
4
5
6
7
8
9
10
using System;
using System.Collections.Generic;
 
var list = new List<double>();
for (var i = 0; i < 10; i++)
{
    list.Add(i * 2.5);
}
 
Console.WriteLine(string.Join(Environment.NewLine, list));
List<T> - это массив динамического размера. Их много разных здесь, здесь и здесь.
0
0 / 0 / 0
Регистрация: 25.10.2020
Сообщений: 168
20.11.2021, 15:57  [ТС]
Тогда эти задания тоже нельзя сделать
Напишите функции-шаблоны для :
•удваивания значения объекта любого типов;
•обмена значений двух объектов любых типов;
•определения большего из значений двух объектов любых типов;
•сравнения значений двух объектов любых типов.
Или что-то можно на generic types (generics).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.11.2021, 15:57
Помогаю со студенческими работами здесь

С плюсов на шарп
Ребят, помогите! Уже час мучаемся! Вот код на плюсах. int Jakobi(int n, int m, float *a, float *b, float eps, float *x) { float...

Из Плюсов в Шарп
#include &lt;iostream&gt; #include &lt;string&gt; int main() { std::string str( &quot;This is string!&quot; ), sub( &quot;is&quot; ); while (...

Портировать Плюсы на Шарп
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { string S, S0; cout &lt;&lt; &quot;Введите строку&quot;...

С плюсов на шарп)
Уже пол дня бьюсь и не могу сделать функцию на шарпе... Сравнивая результаты в программе на С++ они очень отличаются от того что в...

Код из Плюсов в Шарп
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; void funk(int *num,int size) { int i; for(i=0;i&lt;size - 1;i++) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru