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

Переписать код с паскаля (Определение соседних пар матрицы) - C#/.NET 4.x

22.09.2014, 11:50. Просмотров 364. Ответов 7
Метки нет (Все метки)

Помогите переписать прогу на С#, начала изучать, но некоторые моменты мне непонятны.
http://www.cyberforum.ru/csharp-beginners/thread1710156.html

Pascal
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
56
57
58
59
60
61
62
63
64
65
66
67
68
program z;
uses crt;
const n=5; m=5;
var i,j,k:byte;
a:array [1..n,1..m] of integer;
rigth:integer;
begin
     clrscr;
     writeln('Случайная матрица');
     for i:=1 to n do
         begin
              for j:=1 to m do
                  begin
                       a[i,j]:=random(5);
                       write(a[i,j],' ');
                  end;
              writeln;
         end;
     k:=0;
     for i:=1 to n-1 do
         for j:=1 to m do
             if a[i,j]=a[i+1,j]
                then
                begin
                    k:=k+1;
                    writeln(a[i,j],' ');
                    end;
                    
     for i:=1 to n do
         for j:=1 to m-1 do
             if a[i,j]=a[i,j+1]
                then
                begin
                    k:=k+1;
                    writeln(a[i,j],' ');
                    end;
                    
      for i:=1 to n do
         for j:=1 to m-1 do
         if i=j
         then
             if a[i,j]=a[i+1,j+1]
                then
                begin
                    k:=k+1;
                    writeln(a[i,j],' ');
                    end;
             rigth :=  m - 1;      
       for i:=2 to n - 1 do
       begin 
   
             if a[i, rigth]=a[i+1, rigth - 1]
                then
                begin
                    k:=k+1;
                    end;
                    
                    rigth := rigth - 1;
              
        end;
         
     if k>0
        then
            writeln('Кол-во соседних одинаковых элементов: ',k)
     else
         writeln('Соседних одинаковых элементов в матрице нет!');
     readln;
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2014, 11:50
Я подобрал для вас темы с готовыми решениями и ответами на вопрос .NET 4.x Переписать код с паскаля (Определение соседних пар матрицы) (C#):

Количество пар соседних цифр
Помогите пожалуйста с заданием. Дано тринадцатизначное число. Определить...

Вывести произведения всех пар соседних чисел
"дана последовательность целых чисел. Вывести произведения всех пар соседних...

Поиск количества пар взаимообратных соседних элементов массива
Найти количество пар взаимообратных соседних элементов массива А. Добавлено...

одномерный массив посчитать количество пар соседних элементов одного знака
19. Для одномерного массива посчитать количество пар соседних элементов одного...

Отсортировать элементы по периметру матрицы по возрастанию - переписать код на C#
есть задача на паскаль, помогите переделать на C# её пожалуйста: ...

7
fast1kkk
29 / 29 / 12
Регистрация: 15.02.2014
Сообщений: 157
22.09.2014, 12:03 #2
А что это за задача?
0
Katy4020
0 / 0 / 0
Регистрация: 22.09.2014
Сообщений: 2
22.09.2014, 12:06  [ТС] #3
Преподователь сказал переписать на С#.
Вот задача:
В матрице целых чисел заданной размерности определить количества таких пар соседних по вертикали, горизонтали, или диагонали элементов матрицы значения которых совпадают.
0
valdi_korot
50 / 50 / 31
Регистрация: 04.03.2014
Сообщений: 430
Завершенные тесты: 1
22.09.2014, 14:05 #4
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
            int n = Convert.ToInt16(Console.ReadLine());
            int[] countVert=new int[n];
            int[] countHor=new int[n];
            int countDio = 0;
            int[,] arr = new int[n, n];
            Random rand=new Random();
            for (int i = 0; i < n; i++)
            {
                countVert[i] = 0;
                countHor[i] = 0;
                for (int j = 0; j < n; j++)
                {
                    arr[i, j] = rand.Next(0, 10);
                    Console.Write(" " + arr[i, j].ToString());
                }
                Console.WriteLine();
            }
            for (int i = 0; i < n; i++)
                for (int j = 0; j < n - 1; j++)
                {
                    if (arr[i, j] == arr[i, j + 1])
                        countHor[i]++;
                    if (arr[j, i] == arr[j + 1, i])
                        countVert[i]++;     
                }
            for (int i = 0; i < n-1; i++)
                if (arr[i, i] == arr[i + 1, i + 1])
                    countDio++;
 
            countVert.ToList().ForEach(Console.Write);
            Console.WriteLine();
            Console.WriteLine(countDio.ToString());
            countHor.ToList().ForEach(Console.Write);
                    Console.ReadKey();
1
Learx
1045 / 852 / 194
Регистрация: 31.03.2010
Сообщений: 2,486
22.09.2014, 16:22 #5
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int n,m;
n = Convert.ToInt32(Console.ReadLine());
m = Convert.ToInt32(Console.ReadLine());
int[,] mas = new int[n,m];
Random r = new Random();
for(int i=0; i<n; i++)
   for(int j=0; j<m; j++)
        mas[i,j]=r.Next(0,10);
int k=0;
for(int i=0; i<n-1; i++)
   for(int j=0; j<m-1; j++)
       if(mas[i,j]==mas[i+1,j]||mas[i,j]==mas[i,j+1]||mas[i,j]==mas[i+1,j+1]||mas[i,j+1]==mas[i+1,j]) k++;
if(k>0) Console.WriteLine("Найдено {0} пар одинаковых элементов", k);
else Console.WriteLine("Одинаковых рядом стоящих элементов не найдено!");
1
sysrepos
37 / 37 / 21
Регистрация: 08.08.2013
Сообщений: 301
Записей в блоге: 1
23.09.2014, 18:15 #6
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
56
57
58
59
60
61
62
63
64
65
66
using System;
 
class MyArray {
    static void Main() {
        int[,] arr; 
        int i,j;        
        int m=5, n=5;       
        arr=new int[m,n];
            
        int kolpar; 
        int kolpar_h=0;
        int kolpar_v=0;
        int kolpar_d1=0;
        int kolpar_d2=0;
        
        Random random=new Random();
        
        //заполнение массива
        for (i=0; i<m; i++) {
            for (j=0; j<n; j++) {
                arr[i,j]=random.Next(1,5);
                Console.Write(arr[i,j]+" ");                
            }
            Console.WriteLine("");
        }                   
        //подсчет дубликатов по горизонтали
        for (i=0; i<m; i++) {
            for (j=0; j<n-1; j++) {
                if (arr[i,j]==arr[i,j+1]) kolpar_h++;
            }
        }
        Console.WriteLine("по горизонтали "+kolpar_h);
                
        //подсчет дубликатов по вертикали
        for (i=0; i<m-1; i++) {
            for (j=0; j<n; j++) {
                if (arr[i,j]==arr[i+1,j]) kolpar_v++;
            }
        }       
        Console.WriteLine("по вертикали "+kolpar_v);
        
        //подсчет дубликатов по диагонали1
        for (i=0; i<m-1; i++) {
            for (j=0; j<n-1; j++) {
                if (arr[i,j]==arr[i+1,j+1]) kolpar_d1++;
            }
        }               
        Console.WriteLine("по диагонали1 "+kolpar_d1);
        
        //подсчет дубликатов по диагонали2
        for (i=0; i<m-1; i++) {
            for (j=1; j<n; j++) {
                if (arr[i,j]==arr[i+1,j-1]) kolpar_d2++;
            }
        }               
        Console.WriteLine("по диагонали2 "+kolpar_d2);
        
        Console.WriteLine("");
        
        kolpar=kolpar_h+kolpar_v+kolpar_d1+kolpar_d2;
        Console.WriteLine(kolpar);
        
        Console.WriteLine("");
        Console.ReadLine();
    }
}
1
Learx
1045 / 852 / 194
Регистрация: 31.03.2010
Сообщений: 2,486
23.09.2014, 19:08 #7
sysrepos, а зачем городить 4 прохода по массиву, если я уже привел код с одним проходом?
0
sysrepos
37 / 37 / 21
Регистрация: 08.08.2013
Сообщений: 301
Записей в блоге: 1
23.09.2014, 19:28 #8
не знаю, для наглядности может )
0
23.09.2014, 19:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2014, 19:28
Привет! Вот еще темы с решениями:

Дан массив чисел. Найти, сколько в нем пар одинаковых соседних элементов
Что не так( int a = new int; int m = 1, n = 4; ...

Дана строка. Подсчитать количество пар соседних слов, начинающихся на одну и ту же букву
Дана строка. Подсчитать количество пар соседних слов, начинающихся на одну и ту...

Найти количество пар соседних элементов, в которых предыдущий элемент меньше последующего
помогите плиз!

Подсчитать количество пар соседних элементов массива, которые имеют противоположные знаки
Объявить массив целых чисел и заполнить его случайными значениями. Размерность...


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

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

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