Форум программистов, компьютерный форум CyberForum.ru

Двумерный массивы. - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Vasal
0 / 0 / 0
Регистрация: 16.03.2010
Сообщений: 55
13.06.2010, 12:22     Двумерный массивы. #1
Помогите пожалуйста!!!!нужно написать программу:

Латинский квадрат. Латинским квадратом порядка n называется квадратная таблица размером nxn, каждая строка и каждый столбец которой содержат все числа от 1 до n. Проверить, является ли заданная целочисленная матрица латинским квадратом.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2010, 12:22     Двумерный массивы.
Посмотрите здесь:

Двумерный массивы C++
C++ Массивы(двумерный и одномерные)
C++ одномерный и двумерный массивы
C++ двумерный массив
C++ Двумерный массив.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
13.06.2010, 13:30     Двумерный массивы. #2
Цитата Сообщение от Vasal Посмотреть сообщение
Латинский квадрат. Латинским квадратом порядка n называется квадратная таблица размером nxn, каждая строка и каждый столбец которой содержат все числа от 1 до n.
А числа должны идти по порядку? Или допускается произвольное располажение?
Vasal
0 / 0 / 0
Регистрация: 16.03.2010
Сообщений: 55
13.06.2010, 13:33  [ТС]     Двумерный массивы. #3
По порядку
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
13.06.2010, 13:35     Двумерный массивы. #4
Что-то тупанул, исходя из определения числа расположены произвольно, типа как в судоку) Сейчас напишу...

Добавлено через 1 минуту
Цитата Сообщение от Vasal Посмотреть сообщение
По порядку
Не может быть, тогда каждый столбец будет содержать одно и то же число в каждом ряду.
Vasal
0 / 0 / 0
Регистрация: 16.03.2010
Сообщений: 55
13.06.2010, 13:38  [ТС]     Двумерный массивы. #5
препад сказал, типа делай как хошкак те удобней.он блин у нас какой то не понятный, то сначала одно говорит, то другое.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
13.06.2010, 13:40     Двумерный массивы. #6
Лати́нский квадра́т — таблица n × n, заполненная n различными символами таким образом, чтобы в каждой строке и в каждом столбце встречались все n символов (каждый по одному разу)

123
231
312
Vasal
0 / 0 / 0
Регистрация: 16.03.2010
Сообщений: 55
13.06.2010, 13:53  [ТС]     Двумерный массивы. #7
а вот этого кста не зналну наверн тогда так и нада сделать
Vasal
0 / 0 / 0
Регистрация: 16.03.2010
Сообщений: 55
13.06.2010, 14:44  [ТС]     Двумерный массивы. #8
ну так как, поможете???прост оч сильно нужна помощь в написании этой программы
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
13.06.2010, 14:59     Двумерный массивы. #9
Уже написал, одна строка не компилится, хотя должна. Пол часа уже сижу, магией занимаюсь)
Vasal
0 / 0 / 0
Регистрация: 16.03.2010
Сообщений: 55
13.06.2010, 15:00  [ТС]     Двумерный массивы. #10
а можешь прислатьу мя оч хорошо получается ошибки исправлять, ну не всегда, но получается
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
13.06.2010, 15:13     Двумерный массивы. #11
Мне эта ошибка мозг выносит%) Вобщем в мэйне есть строки:
C++
1
2
int n=cin.get();
    int qrt[n][n];  // создаем массив n*n
потом вызывается ф-ция прототип которой выглядет так
C++
1
bool latin (int *mas, int n)
вызываю так
C++
1
latin(qrt, n)
и в этой ф-ции есть строка:
C++
1
x= mas[i][i];
Компилятор на нее ругается, говорит:
invalid types `int[int]' for array subscript
Если эту строку засунуть в мэйн, то все нормально, а в этой ф-ции не компилится%) Вобщем сижу в гугле, выясняю в чем дело.
Vasal
0 / 0 / 0
Регистрация: 16.03.2010
Сообщений: 55
13.06.2010, 15:22  [ТС]     Двумерный массивы. #12
мдя, ошибка и правда странная какая-то
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
13.06.2010, 15:50     Двумерный массивы. #13
эксперементальным путем добился компиляции, ф-ция работает неверно, сейчас сижу исправляю)
Vasal
0 / 0 / 0
Регистрация: 16.03.2010
Сообщений: 55
13.06.2010, 15:53  [ТС]     Двумерный массивы. #14
прикольно
Scythian
 Аватар для Scythian
58 / 58 / 8
Регистрация: 01.01.2010
Сообщений: 222
13.06.2010, 16:56     Двумерный массивы. #15
Kastaneda:
Я может что-то не понял, но у тебя в прототипе объявлен одномерный массив, а ты туда матрицу кидаешь. Может это??
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
13.06.2010, 18:20     Двумерный массивы. #16
Я ТАКООЕ написал, это называется г..нокод, я такое даже выкладывать не хочу. Сижу привожу в более менее нормальный вид. Можетпо-позже выложу)

Цитата Сообщение от Scythian Посмотреть сообщение
Kastaneda:
Я может что-то не понял, но у тебя в прототипе объявлен одномерный массив, а ты туда матрицу кидаешь. Может это??
Да там заморочки с указателем. Указатель на двумерный массив не может индексироваться (проверенно опытным путем)) как двумерный массив.

Добавлено через 1 час 0 минут
Вобщем не так красиво, как хотелось бы, но работает:
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
#include<iostream>
using namespace std;
bool bcount(int*,int);
void count0(int*,int);
int main () {
    int n;
    cout<<"Enter n : ";
    cin>>n;
    int qrt[50][50];  // не удается создать массив N*N
    cout<<"Enter matrix : "<<endl;
    for(int i=0;i<n;i++){
       for(int j=0;j<n;j++)
          cin>>qrt[i][j];
   }
   int count[n+1];
   count0(count,n+1);
   for(int i=0;i<n;i++){  // смотрим строки
      for(int j=0;j<n;j++)
          ++count[qrt[i][j]];
   if (!bcount(count,n+1)){
       cout<<"Matrix is not Latin square"<<endl;
       system ("pause");
       return 0;}
   count0(count,n+1);
   }
   for(int i=0;i<n;i++){  // смотрим столбцы
      for(int j=0;j<n;j++)
          ++count[qrt[j][i]];
         
   if (!bcount(count,n+1)){
       cout<<"Matrix is not Latin square"<<endl;
       system ("pause");
       return 0;}
   count0(count,n+1);
   }
   cout<<"Matrix is Latin square";
   cout<<endl;
   system ("pause");
   return 0;
} 
bool bcount(int *mas, int n) {
    for(int i=1;i<n;i++){
    if(mas[i]==0)return false;}
    return true; }  
void count0(int *mas, int n){
    for(int i=0;i<=n;i++)
       mas[i]=0;}
За то я понял, что не умею работать с двумерными массивами)

Добавлено через 1 минуту
да, еще я английским не в ладах, если что, фразы подправь)
Vasal
0 / 0 / 0
Регистрация: 16.03.2010
Сообщений: 55
13.06.2010, 18:23  [ТС]     Двумерный массивы. #17
я так понимаю, что после 47 строчки, просто вывод???
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
13.06.2010, 18:25     Двумерный массивы. #18
Цитата Сообщение от Vasal Посмотреть сообщение
я так понимаю, что после 47 строчки, просто вывод???
??? Это код полностью, 47-ая строка - это конец.
Vasal
0 / 0 / 0
Регистрация: 16.03.2010
Сообщений: 55
13.06.2010, 18:29  [ТС]     Двумерный массивы. #19
мммм, у мя чет кое какие ошибки выдает:

Ошибка 1 error C2057: требуется константное выражение
Ошибка 2 error C2466: невозможно выделить память для массива постоянного нулевого размера
Ошибка 3 error C2133: count: неизвестный размер
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2010, 18:41     Двумерный массивы.
Еще ссылки по теме:

Двумерный и одномерный массивы С++ C++
C++ одномерный и двумерный массивы, строки
C++ Объявить одномерный и двумерный динамические массивы целых чисел. Написать процедуры для заполнения их случайными значениями

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

Или воспользуйтесь поиском по форуму:
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
13.06.2010, 18:41     Двумерный массивы. #20
А в каких строках?
По поводу count, сделай так
C++
1
int count[51];
По этой же причине не создается матрица N*N, поэтому пришлось делать 50*50
Yandex
Объявления
13.06.2010, 18:41     Двумерный массивы.
Ответ Создать тему
Опции темы

Текущее время: 12:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru