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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Михей91
5 / 5 / 1
Регистрация: 27.12.2009
Сообщений: 69
#1

Сформировать квадратную матрицу порядка n по заданному образцу (Error) - C++

27.12.2009, 23:55. Просмотров 666. Ответов 9
Метки нет (Все метки)

Всем доброго времени суток.
Собственно перейдем сразу к теме...

Задание: Сформировать квадратную матрицу порядка n по заданному образцу:
1 2 3 … n-2 n-1 n
2 1 2 … n-3 n-2 n-1
3 2 1 … n-4 n-3 n-2
… … … … … … …
n-1 n-2 n-3 … 2 1 2
n n-1 n-2 … 3 2 1

Вот что я написал:
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
#include <iostream.h>
#include <math.h>
#include <conio.h>
 
void main()
 
{
clrscr();
 
int A[20][20],i,j,n,k;
 
clrscr();
 
  cout << "\n";
  cout << " Domashnyaya rabota \n";
  cout << " Variant # 21 \n";
  cout << "\n";
  cout << " Vipolnil xxx \n";
  cout << " Gryppa S-32 \n";
  cout << "\n";
  cout << " Zadacha 91: Sformipovat kvadratnyu matricu poryadka n po zadannomu obrazcy: \n";
  cout << "              1   2   3  ...  n-2 n-1  n \n";
  cout << "              2   1   2  ...  n-3 n-2 n-1 \n";
  cout << "              3   2   1  ...  n-4 n-3 n-2 \n";
  cout << "             ... ... ...      ... ... ... \n";
  cout << "             n-1 n-2 n-3 ...   2   1   2 \n";
  cout << "              n  n-1 n-2 ...   3   2   1 \n";
  cout << "\n";
 
cout<<" Vvedite poryadok matrici: /n";
cin>>n;
 
for (i=0; i<n; ++i)
 {
  for (j=i; j<n; ++j)
   {
    A[i,j]=j-i+1;
    A[j,i]=A[i,j];
   }
 }
 
  for (i=0; i<n; ++i)
   {
    cout<<"\n";
    for (j=0; j<n; ++j)
     {
      cout<<A[i,j]<<" ";
     }
   {
 
getch();
 
}
Но программа не работает, выдает следующую ошибку: error: Lvalue required - ругается на данные строчки A[i,j]=j-i+1 и A[j,i]=A[i,j]. Не пойму как исправить (

Кому не трудно, будьте добры, помогите...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2009, 23:55     Сформировать квадратную матрицу порядка n по заданному образцу (Error)
Посмотрите здесь:

Сформировать квадратную матрицу порядка N по заданному образцу - C++
Подскажите, пожалуйста один момент в условии. Вот задачка: Сформировать квадратную матрицу порядка N по заданному образцу: | 1 1 1...

Сформировать квадратную матрицу порядка n по заданному образцу - C++
Сформировать квадратную матрицу порядка n по заданному образцу 1 1 1 ... 1 1 1 2 2 2 ... 2 2 0 ...

Сформировать квадратную матрицу порядка n по заданному образцу c++ - C++
0 0 0 … 0 0 1 0 0 0 … 0 2 0 0 0 0 … 3 0 0 ………………………….. 0 n-1 0 …...

Сформировать квадратную матрицу порядка n по заданному образцу - C++
Сформировать квадратную матрицу порядка n по заданному образцу: n 0 0 … 0 0 0 0 n-1 0 … 0 0 0 0 ...

Сформировать квадратную матрицу порядка n по заданному образцу - C++
Сформировать квадратную матрицу порядка n по заданному образцу: 1 2 3 … n-2 n-1 n 0 1 2 … n-3 n-2 n-1 0 ...

Сформировать квадратную матрицу порядка n по заданному образцу - C++
1 1 1 ... 1 1 1 2 2 2 ... 2 2 0 3 3 3 ... 3 0 0 ... ... ... ... ... ... ... n-1 n-1 0 ... 0 0 0 ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vet
175 / 175 / 13
Регистрация: 08.04.2009
Сообщений: 1,309
28.12.2009, 06:43     Сформировать квадратную матрицу порядка n по заданному образцу (Error) #2
Код
 A[i,j]=j-i+1;
    A[j,i]=A[i,j];
Конструкция как для языка С# а не C++
на С/C++ такая:
C++
1
2
 A[i][j]=j-i+1;
    A[j][i]=A[i][j];
и тут зачем еще одна открывающая скобка(опечатка)? Надо то закрывающую. Ну и синтаксис с массивом соответственно тоже...
C++
1
2
3
4
5
6
7
8
for (i=0; i<n; ++i)
   {
    cout<<"\n";
    for (j=0; j<n; ++j)
     {
      cout<<A[i,j]<<" ";
     }
   {
C++
1
2
3
4
5
6
7
8
for (i=0; i<n; ++i)
   {
    cout<<"\n";
    for (j=0; j<n; ++j)
     {
      cout<<A[i][j]<<" ";
     }
   }
Михей91
5 / 5 / 1
Регистрация: 27.12.2009
Сообщений: 69
28.12.2009, 08:04  [ТС]     Сформировать квадратную матрицу порядка n по заданному образцу (Error) #3
vet, ой спасибо, действительно под ночь голова окончательно перестала соображать )))
Михей91
5 / 5 / 1
Регистрация: 27.12.2009
Сообщений: 69
29.12.2009, 21:06  [ТС]     Сформировать квадратную матрицу порядка n по заданному образцу (Error) #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
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
69
70
71
72
73
74
75
76
77
78
#include <iostream.h>
#include <math.h>
#include <conio.h>
#include <fstream.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
void main()
 
{
clrscr();
 
int A[20][20],i,j,n,k,z;
char chosing[64], *x, name;
 
clrscr();
 
  cout << "\n";
  cout << " Domashnyaya rabota \n";
  cout << " Variant # 21 \n";
  cout << "\n";
  cout << " xxx \n";
  cout << " Gryppa S-32 \n";
  cout << "\n";
  cout << " Zadacha 91: Sformipovat kvadratnyu matricu poryadka n po zadannomu obrazcy: \n";
  cout << "              1   2   3  ...  n-2 n-1  n \n";
  cout << "              2   1   2  ...  n-3 n-2 n-1 \n";
  cout << "              3   2   1  ...  n-4 n-3 n-2 \n";
  cout << "             ... ... ...      ... ... ... \n";
  cout << "             n-1 n-2 n-3 ...   2   1   2 \n";
  cout << "              n  n-1 n-2 ...   3   2   1 \n";
  cout << "\n";
 
cout<<" Vvedite poryadok matrici: ";
cin>>n;
 
for (i=0; i<n; ++i)
 {
  for (j=i; j<n; ++j)
   {
    A[i][j]=j-i+1;
    A[j][i]=A[i][j];
   }
 }
 
  for (i=0; i<n; ++i)
   {
    cout<<"\n";
    for (j=0; j<n; ++j)
     {
      cout<<" "<<A[i][j];
     }
   }
 
 
do
 {
  cout<<" Sohranit ishodnie dannie? ('Da', 'Net') : ";
  cin>>chosing;
 }
while ((chosing[0]=='d') || (chosing[0]=='n'));
   if (chosing [0]== 'd' || chosing[0]=='D')
    {
     cout<<"Dannie budut zapisani v fail C:\pirate.txt : ";
     cin>>name;
     z=A[i][j];
     itoa(A[i][j], x, z); /* трансформируем числовые значения в набор символов */
     FILE * myfile;   /* соединяемся с файлом*/
 
     fwrite (x, strlen(x)+1,1, myfile); /* записываем */
    }
    else { cout<<"Kyky"<<endl; }
 
 
getch();
 
}
Ну вообщем выбор ответа пользователя работает... а вот дальше я не понимаю как сделать так, чтобы пользователь сам вводил имя файла и куда его сохранять, т.е. директорию...
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
30.12.2009, 00:35     Сформировать квадратную матрицу порядка n по заданному образцу (Error) #5
у тебя chosing нужно объявить как char chosing;
a name и dir (которой ещё нет), объявить как string
и вместо FILE * юзать ofstream outf;
тогда открытие файла будет
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    name = dir + name; // может там разделитель ещё / между ними сплюсовать
    outf.open(name.c_str(), ios::out);
 
    // проверка открылся ли файл, поначалу не пишешь, потом напишешь
 
    // запись матрицы проводи также, как чтение, то есть в цикле
 
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++)
            outf << " " << A[i][j];
        outf << endl;
    }
    
    // файл закрывается вручную или деструктором
 
    outf.close();
Михей91
5 / 5 / 1
Регистрация: 27.12.2009
Сообщений: 69
30.12.2009, 00:46  [ТС]     Сформировать квадратную матрицу порядка n по заданному образцу (Error) #6
accept, спасибо, но я мало что понял... "поначалу не пишешь... потом напишешь" какие-то туманные фразы для меня ((( можно как-нибудь Ваши идеи вставить в мой код?
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
30.12.2009, 00:46     Сформировать квадратную матрицу порядка n по заданному образцу (Error) #7
пример маленький

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
 
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main(void)
{
    ofstream outf;
    char choice;
    string name, dir;
    
    cout << "Choice:" << endl;
    cin >> choice;
    
    if (choice != 'y')
        return 1;
        
    cout << "Enter the file name: " << endl;
    cin >> name;
    
    cout << "Enter the path to the file: " << endl;
    cin >> dir;
    
    name = dir + "/" + name;
    
    cout << name << endl;
    
    outf.open(name.c_str(), ios::out);
    
    outf << "test" << endl;
    
    outf.close();
    
    return 0;
}
это под linux'ом вывод
Код
[guest@station tmp]$ g++ t.cpp -o t
[guest@station tmp]$ ./t
Choice:
y
Enter the file name:
x.txt
Enter the path to the file:
/tmp
/tmp/x.txt
[guest@station tmp]$ cat /tmp/x.txt
test
[guest@station tmp]$ rm /tmp/x.txt
[guest@station tmp]$
, под виндой вместо + "/" + делать + "\\" +
Михей91
5 / 5 / 1
Регистрация: 27.12.2009
Сообщений: 69
30.12.2009, 00:50  [ТС]     Сформировать квадратную матрицу порядка n по заданному образцу (Error) #8
accept, спасибо, сегодня уже поздно, завтра поюзаю... ;-)
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
30.12.2009, 00:51     Сформировать квадратную матрицу порядка n по заданному образцу (Error) #9
Цитата Сообщение от Михей91
но я мало что понял
файл может не создасться (ну там, каталог неправильный или прав нет, а каталог админский, а прога под пользователем запускается), поэтому нужно проверить создался ли файл, перед тем, как записывать в него
сначала пишешь без этой проверки, зная, что файл создастся в любом случае, а, когда уже всё работает, нужно писать эту проверку

путь можно вывести на флешку, на флешке запретить запись и программа не выйдет а попробует писать в несуществующий файл
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.12.2009, 00:53     Сформировать квадратную матрицу порядка n по заданному образцу (Error)
Еще ссылки по теме:

Сформировать квадратную матрицу порядка n по заданному образцу - C++
Сформировать квадратную матрицу порядка n по заданному образцу n n-1 n-2 … 3 2 1 n-1 n-2 n-3 … 2 1 0 n-2 n-3 n-4 … 1 0 0 ...

Сформировать квадратную матрицу порядка n по заданному образцу - C++
Сформировать квадратную матрицу порядка n по заданному образцу. Добавлено через 5 минут 1 1 1 ... 1 1 1 1 0 0 ... 0 0 1 1...

Сформировать квадратную матрицу порядка n по заданному образцу - C++
1∙2 0 0 … 0 0 0 0 2∙3 0 … 0 0 0 0 0 3∙4 … 0 0 0 ...

Сформировать квадратную матрицу порядка n по заданному образцу - C++
Помогите сформировать квадратную матрицу порядка n по заданному образцу на С++.... задача есть на Pascal! Program Matrix; Uses crt; ...


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

Или воспользуйтесь поиском по форуму:
Михей91
5 / 5 / 1
Регистрация: 27.12.2009
Сообщений: 69
30.12.2009, 00:53  [ТС]     Сформировать квадратную матрицу порядка n по заданному образцу (Error) #10
accept, это слишком сильно для моего мозга ))))) мне мудрить не нужно... просто тупо в лоб нада написать программу... )
Yandex
Объявления
30.12.2009, 00:53     Сформировать квадратную матрицу порядка n по заданному образцу (Error)
Ответ Создать тему
Опции темы

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