Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
22 / 22 / 1
Регистрация: 06.04.2014
Сообщений: 198
1

Перевести с php на С#

11.10.2016, 23:46. Показов 405. Ответов 4
Метки нет (Все метки)

Помогите пожалуйста перевести код php на С#.

конкретно не могу понять такие строки

PHP
1
2
3
4
5
6
7
8
9
10
11
12
or($i=0; $i < count($matrix); $i++) 
    { 
    for($j=1; $j < count($matrix[$i])-1; $j++) 
        { 
 
    И 
 
 if (!$l and !$r) 
            { 
            $result .= "<b>{$matrix[$i][$j]}</b><sub>[$i,$j]</sub> "; 
            $count++; 
            }
ВОТ ПОЛНЫЙ КОД
PHP
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
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php 
//генерируем случайную матрицу и выводим ее на экран 
$matrix = array(); 
$n = rand(3, 9); 
$m = rand(3, 9); 
 
for($i=0; $i <= $m; $i++) 
    for($j=0; $j <= $n; $j++) 
        echo "<b>".($matrix[$i][$j] = rand(1, 9))."</b><sub>[$i,$j]</sub>".(($j > 0 and $j % $n == 0) ? "<br>" : " "); 
echo "<br><br>"; 
 
//считаем кол-во "особых" элементов 
$count = 0; 
$result = ""; 
for($i=0; $i < count($matrix); $i++) 
    { 
    for($j=1; $j < count($matrix[$i])-1; $j++) 
        { 
        $l = false; 
        $r = false; 
        for($k=$j-1; $k >= 0; $k--) 
            if ($matrix[$i][$k] >= $matrix[$i][$j]) 
                { 
                $l = true; 
                break; 
                } 
        for($k=$j+1; $k <= count($matrix[$i])-1; $k++) 
            if ($matrix[$i][$k] <= $matrix[$i][$j]) 
                { 
                $r = true; 
                break; 
                } 
        if (!$l and !$r) 
            { 
            $result .= "<b>{$matrix[$i][$j]}</b><sub>[$i,$j]</sub> "; 
            $count++; 
            } 
        } 
    } 
 
//выводим результат 
echo "k = $count, ($result)"; 
?>
Остальное все понятно
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.10.2016, 23:46
Ответы с готовыми решениями:

Перевести с php
Пишу регистрацию на JSP, есть код на php: // проверка на существование пользователя с таким же...

Перевести из Си на PHP
Нужно эту программу перевести на PHP: #include &lt;stdio.h&gt; int main(int argc, char *argv) { ...

Перевести с PHP
Второй раз прошу о помощи. Как можно такой код на PHP записать на С++: $data =...

Перевести из С++ на PHP
не знаю как из С++ перевести на PHP, я закинул его уже у файл A, A1 и т.д формы для ввода в HTML...

4
9 / 9 / 4
Регистрация: 07.11.2013
Сообщений: 63
12.10.2016, 00:18 2
Условие задачи в студию..
Цитата Сообщение от mraZzzb Посмотреть сообщение
PHP
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
//считаем кол-во "особых" элементов 
$count = 0; 
$result = ""; 
for($i=0; $i < count($matrix); $i++) 
    { 
    for($j=1; $j < count($matrix[$i])-1; $j++) 
        { 
        $l = false; 
        $r = false; 
        for($k=$j-1; $k >= 0; $k--) 
            if ($matrix[$i][$k] >= $matrix[$i][$j]) 
                { 
                $l = true; 
                break; 
                } 
        for($k=$j+1; $k <= count($matrix[$i])-1; $k++) 
            if ($matrix[$i][$k] <= $matrix[$i][$j]) 
                { 
                $r = true; 
                break; 
                } 
        if (!$l and !$r) 
            { 
            $result .= "<b>{$matrix[$i][$j]}</b><sub>[$i,$j]</sub> "; 
            $count++; 
            } 
        } 
    }
А так-то тот кусок, который Вы выделили и не можете понять, на C# будет выглядеть приблизительно так:
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
31
int count = 0;
            string result = "";
            for(int i =0; i < matrix.Length; i++)
            {
                for(int j = 1; j < matrix.Length-1; j++)
                {
                    l = false;
                    r = false;
                    for(int k = j-1; k >=0; k--)
                    {
                        if(matrix[i,k] >= matrix[i,j])
                        {
                            l = true;
                            break;
                        }
                        for(k = j+1; k<= matrix.Length-1; k++)
                        {
                            if(matrix[i,k] <= matrix[i, j])
                            {
                                r = true;
                                break;
                            }
                        }
                        if(!l && !r)
                        {
                            result = matrix[i, j].ToString();
                            count++;
                        }
                    }
                }
            }
Дебажьте, проверяйте!
0
22 / 22 / 1
Регистрация: 06.04.2014
Сообщений: 198
12.10.2016, 00:29  [ТС] 3
Skipper Ok, Условие задачи: дана целочисленная матрица размером NxM. Определить k–количество “особых” элементов матрицы, считая элемент “особым”, если в его строке все слева от него находятся элементы, меньшие его, а справа – большие.
в строке if (array[i, k] <= array[i, j]) - ошибка, индекс находился вне границ массива..
0
9 / 9 / 4
Регистрация: 07.11.2013
Сообщений: 63
12.10.2016, 01:51 4
Цитата Сообщение от mraZzzb Посмотреть сообщение
в строке if (array[i, k] <= array[i, j]) - ошибка, индекс находился вне границ массива..
Да, немного ошибся переводом из этой строки:
Цитата Сообщение от mraZzzb Посмотреть сообщение
for($j=1; $j < count($matrix[$i])-1; $j++)
Соответственно, тут выходит, что цикл срабатывает до тех пор, пока количество строк - 1 не будет меньше j.
Перепишите условие цикла следующим образом:
C#
1
for (int j = 1; j < matrix.GetLength(0) - 1; j++)
И во втором цикле:
C#
1
for (k = j + 1; k <= matrix.GetLength(0) - 1; k++)
Должно сработать.
0
22 / 22 / 1
Регистрация: 06.04.2014
Сообщений: 198
12.10.2016, 16:54  [ТС] 5
Skipper Ok, Спасибо работает! еще в первом цикле надо было написать for (i = 0; i < array.GetLength(0); i++).
Но еще проблема кроется в проверке, необходимо проверять все числа слева и справа. допустим матрица 2х5
5 1 2 3 4
1 2 4 8 9
в данной матрице особым числом будут числа из второй строки 2 4 8, числа из верхней строки не будут особыми так как справа и слева не все меньше и больше.

Добавлено через 20 минут
Skipper Ok, я подумал что как вариант проверить строку упорядочена ли она по возрастанию, если да то вывести количество чисел между первым и последним числом в этой строке.
Но тоже не всегда работает, к примеру с матрицей 2х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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
for (i = 0; i < n; ++i)
            {
                for (j = 0; j < n - 1; ++j)
                {
                    if (array[i,j] >= array[i,j + 1])
                    {
                        
                        break;
                    }
                    if (j == n - 2)
                        Console.WriteLine(" строка упорядочена по возрастанию " + i + 1);
                        for (i = 0; i < array.GetLength(0); i++)
                         {
                            for (j = 1; j < array.GetLength(0) - 1; j++)
                                {
                                    count++;
                        
                                }
                         }
                }
            }
 
            string result = "";
            for (i = 0; i < array.GetLength(0); i++)
            {
                for (j = 1; j < array.GetLength(0) - 1; j++)
                {
                    bool l = false;
                    bool r = false;
                    for ( k = j - 1; k >= 0; k--)
                    {
                        if (array[i, k] >= array[i, j])
                        {
                            l = true;
                            break;
                        }
                        for (k = j + 1; k <= array.GetLength(0) - 1; k++)
                        {
                            if (array[i, k] <= array[i, j])
                            {
                                r = true;
                                break; 
                            }
                        }
                        if (!l && !r)
                        {
                            result = array[i, j].ToString();
                            Console.WriteLine("mas[" + i + "," + j + "]: " + array[i, j] + " ");
                            //count++;
                        }
                    }
                }
            }
           
            Console.WriteLine("Число особых элементов = {0}", count);
Добавлено через 5 часов 43 минуты
Skipper Ok, Только неправильно реализовал, неверно считает
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.10.2016, 16:54

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Перевести скрипт на php
Здравствуйте. В общем есть задача на определение точки полигону. Самому написать ее ума не...

Перевести формулу на php
Всем привет! есть формула -&gt; тут. (1240-1040/(min(TIER,6)^0.164))*FRAGS + DAMAGE *...

Перевести код из JS в PHP
Нужно, чтоб вообще без скрипта остался. Либо пхп, чтоб скрипт запрашивала. Если такое делается...

Перевести код с php на C#
Тут генерация всех чисел с 1 до 49 шесть раз с выводом потраченного времени. Нужно так же но на C#,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.