0 / 0 / 0
Регистрация: 15.05.2010
Сообщений: 17
1

Написать программу, которая позволяет осуществить ввод матрицы произвольного размера

15.05.2010, 21:49. Показов 11967. Ответов 35
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написать программу, которая позволяет осуществить ввод матрицы произвольного размера и выполнить следующие операции:
- добавление к данной матрице любого количества столбцов;
- циклическую перестановку местами строк в полученной матрице;
- умножить полученную матрицу на число, введенное с клавиатуры.

Добавлено через 2 минуты
Пишу курсовик на языке Си) вроде начал, но чет не работает.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.05.2010, 21:49
Ответы с готовыми решениями:

Написать программу, которая позволяет осуществить ввод 2-х матриц одинакового размера
Помогите курсовик дали,помогите с началом программы: Написать программу, которая позволяет...

Написать программу транспонирования квадратной матрицы произвольного размера
Написать программу транспонирования квадратной матрицы произвольного размера. Значения элементов...

Необходимо создать программу, которая позволяет осуществить графическое построение генеалогического древа
Необходимо создать программу, которая позволяет осуществить графическое построение ...

Создать программу, которая позволяет осуществить все операции над элементами множеств: пересечение, объединение, разность, проверку эквивалентности и
Создать программу, которая позволяет осуществить все операции над элементами множеств: пересечение,...

35
49 / 10 / 3
Регистрация: 20.09.2009
Сообщений: 263
15.05.2010, 21:56 2
Попробуй поискать тут
0
0 / 0 / 0
Регистрация: 15.05.2010
Сообщений: 17
15.05.2010, 23:57  [ТС] 3
Цитата Сообщение от Red Planet Посмотреть сообщение
Попробуй поискать тут
спасибо, сейчас посмотрю

Добавлено через 56 секунд
а как сначала написать, что бы просто ввести матрицу произвольного размера?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<iostream.h>
#include<iomanip.h>
main()
{
  int i,j;
  float n;
  printf("Input size of matrix:");
  scanf("%d",&n);
  printf("Fill of matrix\n",&n);
  for (i=0; i<n; i++)
    for (j=0; j<n; j++)
       scanf("%f",&n[i][j]);
  getch();
}
подскажите, что не так
0
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
16.05.2010, 00:00 4
FerMen, а где у вас сама матрица объявлена?
0
0 / 0 / 0
Регистрация: 15.05.2010
Сообщений: 17
16.05.2010, 00:37  [ТС] 5
Добавлено через 12 минут
а так?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<iostream.h>
#include<iomanip.h>
main()
{
  int i,j,n[5][5];
  printf("Input size of matrix:");
  scanf("%d",&n);
  printf("Fill of matrix\n",&n);
  for (i=0; i<n; i++)
    for (j=0; j<n; j++)
       scanf("%f",&n[i][j]);
  getch();
}
0
49 / 10 / 3
Регистрация: 20.09.2009
Сообщений: 263
16.05.2010, 10:59 6
FerMen, я бы рекомендовал класс написать.
Примерно так:
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
#include <cstdlib>
#include <iostream>
using namespace std;
 
class Matrix
{
 private: unsigned int n, m; //cols and rows.
 public: double **matr; //Память под матрицу.
 Matrix ()
 {
  cout <<"Rows: ";
  cin >>n;
  cout <<"Cols: ";
  cin >>m;
  matr = new double *[n];
  for (int i=0; i<m; i++) matr[i] = new double [m];
 }//Конструктор по умолчанию.
 
 void input () 
 {
      for (int i=0; i<n; i++)
      {
          for (int j=0; j<m; j++)
          {
              cout <<"a"<<i<<j<<"=";
              cin >>matr[i][j];
          }//j.
      }//i.
 }//Ввод матрицы.
              
};
 
int main(int argc, char *argv[])
{
    Matrix m1;
    m1.input ();
    system("PAUSE");
    return EXIT_SUCCESS;
}
Это только так, начало. Делаю на скорую руку, спешу.
P.S. Класс использовать тут рекомендую в принципе.
1
0 / 0 / 0
Регистрация: 15.05.2010
Сообщений: 17
16.05.2010, 11:57  [ТС] 7
кул)) ща гляну..
0
0 / 0 / 0
Регистрация: 15.05.2010
Сообщений: 17
21.05.2010, 10:27  [ТС] 8
в 16 и 25 строке выдает ошибку: functions containing for are not expanded inline
не пойму из-за чего, подскажитеПожайлуста
0
0 / 0 / 0
Регистрация: 19.12.2009
Сообщений: 14
21.05.2010, 10:38 9
Можно вот так:
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
int MatrixWidth(){
    cout << "\nВведите ширину матрицы: ";
        int w;      //w - width
        cin >> w;
    return w;
}
 
void MatrixShow(const int* const* matrix, int w){
 
    for (int i = 0; i < w; ++i){
        cout << endl;
        for (int j=0; j < w; ++j){
            cout << matrix[i][j] << ' ';
        }
    }
}
 
int main()
{
    int w;                                    //
    w = MatrixWidth();                   //Задаём ширину матрицы
 
    int** matrix = new int*[w];       //Указатель на указатели ряда
 
    for(int i = 0; i < w; ++i)            //Указатель на столбцы
        matrix[i] = new int[w];
 
    for(int i = 0; i < w; ++i)            //заполняем массив
        for (int j=0; j < w; ++j){
             cout << "\nMatrix [" << i << "][" << j <<"] = ";
             cin >> matrix[i][j];
        }
 
    MatrixShow(matrix, w);
 
    for(int i = 0; i < w; ++i)       //Очищаем память
        delete [] matrix[i];
 
    delete [] matrix;
 
    return 0;
}
0
0 / 0 / 0
Регистрация: 15.05.2010
Сообщений: 17
21.05.2010, 10:52  [ТС] 10
на 29 и 37 выдает: Multiple declaration for 'i'
0
0 / 0 / 0
Регистрация: 19.12.2009
Сообщений: 14
21.05.2010, 12:37 11
C++
1
2
3
#include <cstdlib>
#include <iostream>
using namespace std;
вот это добавь в начало.

У меня компилятор MinGW, IDE - Code::Blocks, если что.
0
49 / 10 / 3
Регистрация: 20.09.2009
Сообщений: 263
22.05.2010, 21:13 12
В своем коде (сообщение №6) я не предусмотрел того, что к матрице нужно будет добавлять столбцы или строки. А теперь и самому стало интересно, как это делается. Насколько я знаю изменять размеры массива в ходе программы нельзя. С другой стороны есть vector, который изменять позволяет, но для него нужно объявить в начале, сколько в нем (в контейнере vector) элементов. Как быть в данной ситуации?

WoodyArt, в вашей программе тоже не нашел добавление столбцов.
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
22.05.2010, 21:43 13
В Си++ не знаю, но в Си есть realloc, как раз для изменения размера массива на лету
0
0 / 0 / 0
Регистрация: 15.05.2010
Сообщений: 17
30.05.2010, 18:36  [ТС] 14
Red Planet подскажи, почему в 16 и 25 строке выдает ошибку: functions containing for are not expanded inline? (сообщение №6). Я уже все перепробывал, все равно не пойму
0
0 / 0 / 0
Регистрация: 15.05.2010
Сообщений: 17
05.06.2010, 21:56  [ТС] 15
Вот текст программы, которая добавляет в матрицу столбец из единиц:
Подскажите, как сделать, что бы вместо единиц, я мог вписывать свои числа?
Помогите пожалуйста!! очень надо)


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
#include<iostream.h>
#include<conio.h>
 
void main ()
{
 int m,n,i,j,k;
 cout << "Enter M, N: ";
 cin >> m >> n;
 cout << endl << "Enter " << m*n << " elements of array: ";
 int **a = new int *[m];
 for (i=0; i<m; i++)
 {
 a[i] = new int [n];
 for (j=0; j<n; j++)
 cin >> a[i][j];
 }
do {
    cout << "Enter K: ";
    cin >> k;
    }
while(k<1 || k>n);
for (i=0, k--; i<m; i++){
    for (j=0; j<n; j++){
    cout << a[i][j];
    if (k==j) cout << "1";
        }
    cout << endl;
    }
getch();
}
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
05.06.2010, 22:00 16
Если я не ошибаюсь, эта программа не добавляет столбец из 1, а просто выводит дополнительную единицу после вывода всей строки на экран. Т.е. никаких изменений самого массива не происходит... так что это не подойдёт...
0
0 / 0 / 0
Регистрация: 15.05.2010
Сообщений: 17
05.06.2010, 22:05  [ТС] 17
а как тогда по-другому?
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
05.06.2010, 22:07 18
Сейчас попробую изобразить... Что-то никак не могу сообразить, можно ли довыделить память так, чтобы образовались дополнительные столбцы... И поскольку сообразить не могу, сделаю просто чтобы выделялась дополнительная память для новой матрицы с новым количеством столбцов, туда копировалась вся информация из старой матрицы с меньшим количеством столбцов, а потом память из-под старой матрицы освобождалась
0
0 / 0 / 0
Регистрация: 15.05.2010
Сообщений: 17
05.06.2010, 22:14  [ТС] 19
отлично будет)
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
05.06.2010, 22:19 20
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
79
80
81
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    double **matrix;
    double **newmatrix;
    int rows, cols;
    int newcols;
    int i, j;
 
    cout << "Input number of rows: ";
    cin >> rows;
 
    cout << "Input number of cols: ";
    cin >> cols;
 
    matrix = new double *[rows];
 
    for (i = 0; i < rows; i++)
        matrix[i] = new double [cols];
 
    cout << "Input elements of matrix:" << endl;
 
    for (i = 0; i < rows; i++)
        for (j = 0; j < cols; j++)
        {
            cout << "matrix[" << i << "][" << j << "] = ";
            cin >> matrix[i][j];
        }
 
    for (i = 0; i < rows; i++)
    {
        for (j = 0; j < cols; j++)
            cout << matrix[i][j] << " ";
 
        cout << endl;
    }
 
    cout << "Input new number of cols: ";
    cin >> newcols;
 
    newmatrix = new double *[rows];
 
    for (i = 0; i < rows; i++)
        newmatrix[i] = new double [newcols];
 
    for (i = 0; i < rows; i++)
        for (j = 0; j < cols; j++)
            newmatrix[i][j] = matrix[i][j];
 
    for (i = 0; i < rows; i++)
        delete matrix[i];
 
    delete[] matrix;
 
    for (i = 0; i < rows; i++)
        for (j = cols; j < newcols; j++)
        {
            cout << "matrix[" << i << "][" << j << "] = ";
            cin >> newmatrix[i][j];
        }
 
    for (i = 0; i < rows; i++)
    {
        for (j = 0; j < newcols; j++)
            cout << newmatrix[i][j] << " ";
 
        cout << endl;
    }
 
    for (i = 0; i < rows; i++)
        delete newmatrix[i];
 
    delete[] newmatrix;
 
    getch();
    return 0;
}
1
05.06.2010, 22:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2010, 22:19
Помогаю со студенческими работами здесь

Написать программу, которая позволяет нарисовать закрашенный треугольник
Задание 4. Написать программу, которая позволяет нарисовать закрашенный треугольник. ...

Написать программу, которая позволяет вводить целочисленную матрицу
1) Написать программу, которая позволяет вводить одномерный целочис-ленный массив из 10 элементов и...

Написать программу, которая позволяет получит следующую информацию
Написать программу, которая позволяет получит следующую информацию: - всю программу телепередач...

Написать программу, которая позволяет просматривать текстовые файлы
Написать программу, которая позволяет просматривать текстовые файлы...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru