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

Перевод кода с C++ на C#

18.09.2010, 15:39. Показов 2572. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет Всем! Подскажите аналог fabs() , rand() и RAND_MAX на шарпе.
 Комментарий модератора 
Не ну-кай - здесь тебе никто ничего не обязан.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.09.2010, 15:39
Ответы с готовыми решениями:

Перевод кода с Паскаля (перевод в метры)
var a,b,d:integer; c,e:real; begin writeln('1-дециметр 2-километр'); writeln('3-метр ...

Перевод кода с C#
Random r = new Random(); int arr = new int; int sum = 0, ...

Перевод кода из с++ в с
Господа, помогите перевести из с++ в си фрагменты кода, очень надеюсь) // пользовательские...

Перевод кода C# в C++
Здравствуйте! Помогите пожалуйста перевести данный код C# на C++. using System; using...

14
2096 / 1261 / 171
Регистрация: 01.02.2009
Сообщений: 2,842
18.09.2010, 15:49 2
Цитата Сообщение от Александр Елис Посмотреть сообщение
rand()
Класс Random:
C#
1
2
Random rand = new Random();
int n = rand.Next(int.MinValue, int.MaxValue);
0
3 / 3 / 0
Регистрация: 20.05.2010
Сообщений: 50
18.09.2010, 15:51  [ТС] 3
Спасибо! Только небоьшой вопросик: я так понимаю, что параметры - это пределы для генерации произвольного числа?
И еще: где находится Math в c# ?
Заранее спасибо!
0
2096 / 1261 / 171
Регистрация: 01.02.2009
Сообщений: 2,842
18.09.2010, 15:55 4
Цитата Сообщение от Александр Елис Посмотреть сообщение
RAND_MAX
Если использовать метод Next без параметров, то вернется число в диапазоне от 0 до int.MaxValue.

Добавлено через 2 минуты
Цитата Сообщение от Александр Елис Посмотреть сообщение
где находится Math в c# ?
В пространстве имен System. Пример:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;
 
namespace ConsoleApplication15
{
    class Program
    {
        static void Main(string[] args)
        {
            Random rand = new Random();
            int n = rand.Next(0, 100);
            n = (int)Math.Pow(n, 2);
            Console.Write(n);
            Console.ReadKey();
        }
    }
}
0
3 / 3 / 0
Регистрация: 20.05.2010
Сообщений: 50
18.09.2010, 15:56  [ТС] 5
Т.е. я могу получить число в диапазоне от a до b таким образом?
C#
1
temp = a + (double)rand.Next() / int.MaxValue * (b - a);
0
2096 / 1261 / 171
Регистрация: 01.02.2009
Сообщений: 2,842
18.09.2010, 15:57 6
Цитата Сообщение от Александр Елис Посмотреть сообщение
fabs()
C++
1
2
double x = 12.5689;
double y = fabs(x);
Скажи, чему будет равен y, и я скажу, какая функция соответствует ей в C#
0
3 / 3 / 0
Регистрация: 20.05.2010
Сообщений: 50
18.09.2010, 15:59  [ТС] 7
Требуется, чтобы получалось 12.5689
0
2096 / 1261 / 171
Регистрация: 01.02.2009
Сообщений: 2,842
18.09.2010, 16:01 8
Цитата Сообщение от Александр Елис Посмотреть сообщение
Т.е. я могу получить число в диапазоне от a до b таким образом?
Нет. Число получается так:
C#
1
int n = rand.Next(a, b);
Добавлено через 1 минуту
Цитата Сообщение от Александр Елис Посмотреть сообщение
Требуется, чтобы получалось 12.5689
ИМХО
C#
1
2
double x = 12.5689;
double y = x;
0
3 / 3 / 0
Регистрация: 20.05.2010
Сообщений: 50
18.09.2010, 16:07  [ТС] 9
int n = rand.Next(a, b);
Насколько я понимаю, таким образом я получаю целочисленное значение.
Если же я использую
a + (double)rand.Next() / int.MaxValue * (b - a);
, то, по-моему, rand.next() возвращает значение, которое приводится к типу дабл, делю его на максимальное значение int, получаю тем самым значение от 0 до 1. Умножаю на (b-a), получаю значение от 0 до b-a; прибавляю a, получаю значение от a до b.
В чем я не прав?
Если есть значение 12.3434 или -12.3434 (знак неизвестен заранее), как получить его модуль?
0
2096 / 1261 / 171
Регистрация: 01.02.2009
Сообщений: 2,842
18.09.2010, 16:10 10
Цитата Сообщение от Александр Елис Посмотреть сообщение
Если есть значение 12.3434 или -12.3434 (знак неизвестен заранее), как получить его модуль?
C#
1
 double d = Math.Abs(-12.3434)
1
3 / 3 / 0
Регистрация: 20.05.2010
Сообщений: 50
18.09.2010, 16:12  [ТС] 11
Спасибо. Со всем разобрался. Тему можно закрывать.
0
2096 / 1261 / 171
Регистрация: 01.02.2009
Сообщений: 2,842
18.09.2010, 16:12 12
Цитата Сообщение от Александр Елис Посмотреть сообщение
получаю тем самым значение от 0 до 1.
Если необходимо получить число типа double от 0 до 1:
C#
1
2
Random rand = new Random();
double b = rnd.NextDouble();
0
11 / 11 / 0
Регистрация: 18.02.2010
Сообщений: 153
03.04.2011, 04:11 13
А присваивание в 8й строке h=scale=0.; аналог не подскажешь?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <math.h> 
 
void tred2(float **a, int n, float *d, float *e) { 
  int l,k,j,i; 
  float scale,hh,h,g,f; 
  /* Проход по стадиям процесса редукции */ 
  for(i=n;i>=2;i--) { 
    l=i-1; h=scale=0.; 
    /* сложный процесс везде, кроме последней стадии */ 
    if(l>1) { 
      /* вычислить шкалу */ 
      for(k=1;k<=l;k++) scale += fabs(a[i][k]); 
      /* малая величина шкалы -> пропустить преобразование */ 
      if(scale==0.) e[i]=a[i][l]; 
      else { 
       /* отмасштабировать строку и вычислить s2 в h */ 
        for(k=1;k<=l;k++) { 
          a[i][k]/=scale; h += a[i][k]*a[i][k]; 
        }
и в12й строке насколько я понял при переводе должно быть scale += Math.Abs(a[i][k]);
0
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
03.04.2011, 11:27 14
попробуйте, а потом задавайте вопрос, а то выглядит так, что вам очень лень.
(не проверял, писал в браузере)
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
void tred2(float[,] a, int n, float[] d, float[] e) 
{ 
  /* Проход по стадиям процесса редукции */ 
  for (int i = n; i >= 2; i--) 
  { 
    int l = i - 1; 
    float h = 0f;
    float scale = 0f; 
    /* сложный процесс везде, кроме последней стадии */ 
    if (l > 1) 
    { 
      /* вычислить шкалу */ 
      for (int k = 1; k <= l; k++) 
        scale += Math.Abs(a[i][k]); 
      /* малая величина шкалы -> пропустить преобразование */ 
      if (scale == 0f) 
        e[i] = a[i][l]; 
      else 
      { 
       /* отмасштабировать строку и вычислить s2 в h */ 
        for(k = 1; k <= l; k++) 
        { 
            a[i][k] /= scale; 
            h += a[i][k] * a[i][k]; 
        }
1
11 / 11 / 0
Регистрация: 18.02.2010
Сообщений: 153
03.04.2011, 15:56 15
я пробовал перед тем как тему выложить, а код оригинала выложил, чтобы понятней было)
0
03.04.2011, 15:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.04.2011, 15:56
Помогаю со студенческими работами здесь

Перевод кода из C++ в C#
Понимаю, что прошу сложную задачу, но я начал изучать C# буквально пару дней назад, а уже сейчас...

Перевод кода с C++ на C#
#include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;vector&gt; using namespace std; int a;...

Перевод кода С# на С++
Данный код написан на языке С#. Необходимо перевести на язык С++. namespase...

перевод кода с++
Помогите перевести код с++ в с#


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru