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

Создание матрицы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 5.00
Лель
1 / 1 / 0
Регистрация: 03.10.2013
Сообщений: 24
29.10.2013, 23:19     Создание матрицы #1
Дано натуральное число n. Получить действительную матрицу |aij|ij=1…n, для которой aij=1/(i+j).

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
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <math.h>
 
using namespace std;
 
int main ()
{
    setlocale(LC_ALL, "rus");  
    int i=0, j, n, otvet;
    double x[100][100];
    cout<<"\nСформировать матрицу вручную? \n*ИНСТРУКЦИЯ*\nОтветом может быть только одна цифра:\n 1, если Ваш ответ - ДА \n0, если Ваш ответ - НЕТ. \nВаш ответ:";
    cin>> otvet;
    if (otvet=1)
    { cout << "\nВведите размер квадратной матрицы: ";
        cin >> n;
        for (i=0; i<=n; i++);
      {
        for (j=0; j<n; j++);
        {x[i][j]=1/(i+j);
        cout<<x[i][j]<<endl;
        }}};
    else for (i=0; i<=n; i++);
      {
        for (j=0; j<n; j++);
        {x[i][j]=rand() %200-100;
        cout<<x[i][j]<<endl;
    
    system ("pause");
    return 0;
        } }
Выдает ошибки:
Ошибка 1 error C2181: недопустимый else без парного if - 24 строка, 1 столбец
Ошибка 2 error C1075: конец файла обнаружен ранее, чем левая фигурная скобка "{" в "c:\users\soft\desktop\лаб" - 33 строка, 1 столбец
3 IntelliSense: требуется оператор - 24 строка, 2 столбец

Помогите, пожалуйста, их исправить
И еще такой вопрос: если запустить программу с циклами отдельно, то матрица не создается (!) и на экран выводится просто ноль. Вот...
http://i.pixs.ru/storage/3/2/7/Bezim...85_9547327.png
Как это исправить и сделать так, чтобы матрица нормально выводилась??
Заранее благодарна!)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2013, 23:19     Создание матрицы
Посмотрите здесь:

Создание матрицы 5*3 в С++ C++
C++ Создание массива из матрицы
C++ Заполнение массива и создание матрицы.
C++ C++ создание матрицы
Создание динамической матрицы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Scythian
 Аватар для Scythian
58 / 58 / 8
Регистрация: 01.01.2010
Сообщений: 222
29.10.2013, 23:24     Создание матрицы #2
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
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <math.h>
 
using namespace std;
 
int main ()
{
    setlocale(LC_ALL, "rus");  
    int i=0, j, n, otvet;
    double x[100][100];
    cout<<"\nСформировать матрицу вручную? \n*ИНСТРУКЦИЯ*\nОтветом может быть только одна цифра:\n 1, если Ваш ответ - ДА \n0, если Ваш ответ - НЕТ. \nВаш ответ:";
    cin>> otvet;
    if (otvet=1)
    { cout << "\nВведите размер квадратной матрицы: ";
        cin >> n;
        for (i=0; i<=n; i++)
      {
        for (j=0; j<n; j++)
        {
         x[i][j]=1/(i+j);
         cout<<x[i][j];
        }
        cout<<endl;
      }
    }
    else 
      for (i=0; i<=n; i++)
      {
        for (j=0; j<n; j++)
        {
          x[i][j]=rand() %200-100;
          cout<<x[i][j];
        }
        cout<<endl;
      }
    
    system ("pause");
    return 0;
     }
Вроде бы все... Количество открытых скобок должно равняться количеству закрытых!!!! И после фор'ов точка с запятой не ставятся
Bezopasnuy
2 / 2 / 1
Регистрация: 29.10.2013
Сообщений: 10
29.10.2013, 23:26     Создание матрицы #3
по первой ошибки - Else должно стоять перед тремя скобками
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
29.10.2013, 23:26     Создание матрицы #4
Лель, "}}};" в этой строке не должно быть ; и вы в конце поставили }} подозреваю что одна из них стоит не в том месте
Лель
1 / 1 / 0
Регистрация: 03.10.2013
Сообщений: 24
30.10.2013, 09:19  [ТС]     Создание матрицы #5
Folko и Bezopasnuy - спасибо большое за поправки!
Scythian - отдельное спасибо!

Но программа все равно не хочет нормально работать Появляется диалоговое окно и в нем: Необработанное исключение по адресу 0x00887DB3 в ConsoleApplication1.exe: 0xC0000094: Integer division by zero. Программа останавливается на 22 строке...
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
30.10.2013, 11:45     Создание матрицы #6
Лель,
C++
1
2
3
4
5
for (i=0; i<=n; i++)
      {
        for (j=0; j<n; j++)
        {
         x[i][j]=1/(i+j);
проблема происходит на первом шаге, когда происходит 1/(0+0); то есть деление на ноль. Думаю, что так. Хотя у меня почему то программа ошибки не выдала, когда я 1 поделил на 0
Scythian
 Аватар для Scythian
58 / 58 / 8
Регистрация: 01.01.2010
Сообщений: 222
30.10.2013, 15:53     Создание матрицы #7
C++
1
x[i][j]=1/((i+1)+(j+1))
Думаю вот так можно решить эту проблему
Лель
1 / 1 / 0
Регистрация: 03.10.2013
Сообщений: 24
31.10.2013, 20:28  [ТС]     Создание матрицы #8
Я думаю, что нет, тут дело не в том, я вроде бы поняла... У матрицы координаты значений сразу задаются (1;1) (1;2) и т.д., там не может быть нулевого столбца или строки, потому и нет таких координа (0;1), (2;0). Так что, думаю, что можно сразу сделать так:
C++
1
2
3
4
5
for (i=1; i<=n; i++)
      {
        for (j=1; j<n; j++)
        {
         x[i][j]=1/(i+j);
Программа запускается, но результат, не зависимо от размера матрицы, такой:
http://i.pixs.ru/storage/1/1/1/Bezim...13_9568111.png
Т.е. значения она все равно не считает, да и размер у матрицы странный: 5х4, хотя должен быть 5х5.
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
31.10.2013, 20:30     Создание матрицы #9
Лель, а вы не забыли, что int a[10] объявит вам массив от 0 до 9? и у вас во втором цикле i < n, поэтому и 4 столбца. Объявляйте массивы размером на 1 больше чем вводимое n
Лель
1 / 1 / 0
Регистрация: 03.10.2013
Сообщений: 24
31.10.2013, 20:44  [ТС]     Создание матрицы #10
Я не много не поняла, где массив объявляется. Я его вроде бы в начале в самом объявила: double x[100][100];. Или это не оно? Что надо изменить?
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
31.10.2013, 23:00     Создание матрицы #11
Лель, оу, такие размеры... тогда у вас просто в цикле надо j <= 5. А то цикл i совершает 5 шагов, а цикл j совершает 4. Вот и получается 4 столбца)
Лель
1 / 1 / 0
Регистрация: 03.10.2013
Сообщений: 24
31.10.2013, 23:19  [ТС]     Создание матрицы #12
Программа должна автоматически вместо n подставлять 5, можно же не 5 ввести, а 25, а программа все равно будет 5 проверять...
Но я смогла это исправить Просто надо было сделать так, чтобы у j тоже условие стояло, что j<=n. Там выдает матрицу 5х5, но она все равно вся из нулей
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2013, 00:48     Создание матрицы
Еще ссылки по теме:

C++ Создание матрицы графическим способом
C++ Создание и обработка матрицы
Создание динамической матрицы C++

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

Или воспользуйтесь поиском по форуму:
Scythian
 Аватар для Scythian
58 / 58 / 8
Регистрация: 01.01.2010
Сообщений: 222
01.11.2013, 00:48     Создание матрицы #13
Нашел я ошибки... Во-превых:
два равно
C++
1
 if (otvet==1)
в строке
C++
1
x[i][j]=1/(i+j);
замените 1 на 1.0
в else тоже вставте
C++
1
2
cout << "\nВведите размер квадратной матрицы: ";
        cin >> n;
Да и вывод рекомендую более читабельным сделать, например так:
C++
1
cout<<setw(5)<<x[i][j];
Yandex
Объявления
01.11.2013, 00:48     Создание матрицы
Ответ Создать тему
Опции темы

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