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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.97
FerMen
0 / 0 / 0
Регистрация: 15.05.2010
Сообщений: 17
#1

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

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

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

Добавлено через 2 минуты
Пишу курсовик на языке Си) вроде начал, но чет не работает.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2010, 21:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написать программу, которая позволяет осуществить ввод матрицы произвольного размера (C++):

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

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

Написать программу, которая позволяет во введенной строке поменять первые буквы каждого слова на прописные - C++
нужно составить текст программы, которая позволяет по введенной строке поменять первые буквы каждого слова на прописные. Вывести на экран...

Написать программу, которая по последней цифре числа позволяет определить последнюю цифру его квадрата - C++
13 Написать программу, которая по последней цифре числа позволяет определить последнюю цифру его квадрата. Использовать оператор выбора...

Разработать алгоритм и написать по нему программу умножения матрицы А размера m × n на матрицу В размера n × p. Значение величин m, n, р выбрать из та - C++
Разработать алгоритм и написать по нему программу умножения матрицы А размера m × n на матрицу В размера n × p. Значение величин m, n, р...

Матрицы произвольного размера. - C++
Помогите пожалуйста написать программу, которая будет работать с матрицами произвольного размера. необходимо определить для матриц операции...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
05.06.2010, 22:00 #16
Если я не ошибаюсь, эта программа не добавляет столбец из 1, а просто выводит дополнительную единицу после вывода всей строки на экран. Т.е. никаких изменений самого массива не происходит... так что это не подойдёт...
FerMen
0 / 0 / 0
Регистрация: 15.05.2010
Сообщений: 17
05.06.2010, 22:05  [ТС] #17
а как тогда по-другому?
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
05.06.2010, 22:07 #18
Сейчас попробую изобразить... Что-то никак не могу сообразить, можно ли довыделить память так, чтобы образовались дополнительные столбцы... И поскольку сообразить не могу, сделаю просто чтобы выделялась дополнительная память для новой матрицы с новым количеством столбцов, туда копировалась вся информация из старой матрицы с меньшим количеством столбцов, а потом память из-под старой матрицы освобождалась
FerMen
0 / 0 / 0
Регистрация: 15.05.2010
Сообщений: 17
05.06.2010, 22:14  [ТС] #19
отлично будет)
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
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;
}
FerMen
0 / 0 / 0
Регистрация: 15.05.2010
Сообщений: 17
05.06.2010, 22:44  [ТС] #21
т.е. теперь просто после матрицы добавляются столбцы?
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
05.06.2010, 22:45 #22
Нет, теперь не просто после матрицы, а именно создаётся новая матрица с новым количеством столбцов. А вы на что рассчитывали?
FerMen
0 / 0 / 0
Регистрация: 15.05.2010
Сообщений: 17
05.06.2010, 22:59  [ТС] #23
спасибо огромное)
если не сложно, то у меня еще парочка вопросов:
можешь глянуть, где ошибка? мне нужно поменять первую и последнюю строчку местами
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
#include<iostream.h>
#include<conio.h>
 
void main ()
{
 int m,n,i,j,temp;
 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];
  }
 
 
        //vbIvod isxodnogo massiva
        for (i=0; i<m; i++){
                for (j=0; j<n; j++){
                      cout<<a[n][m]<<" ";
                      
                                    }
                                cout<<endl;}
 
        for(i=0; i<1; i++)
                {
                        for (j=0; j<4; j++)
                        {
                temp=a[i][j];
                                a[i][j]=a[m-i][j];
                a[i-m][j]=temp;
                              //  cout<<temp;
                        }
                }
                //vbIvod poluchennogo massiva
                cout<<endl;
        for (i=0; i<m; i++){
                for (j=0; j<n; j++){
                      cout<<a[i][j]<<" ";
                      
                                    }
                                cout<<endl;}
}
fasked
Эксперт С++
4935 / 2515 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
05.06.2010, 23:02 #24
а я думал, что cin и cout в Си не бывает
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
05.06.2010, 23:05 #25
fasked, вы правы, как и new и delete
Но мне-то на обозрение предоставили код на Си++, вот я и ответил той же монетой))

Добавлено через 1 минуту
FerMen,
Ошибки нет, просто вы меняете элементы одной-единственной первой строки сами с собой. Чтобы поменять элементы первой и последней строки, нужно сделать следующее:
C++
1
2
3
4
5
6
for (j = 0; j < cols; j++)
{
    temp = matrix[0][j];
    matrix[0][j] = matrix[rows - 1][j];
    matrix[rows - 1][j] = temp;
}
FerMen
0 / 0 / 0
Регистрация: 15.05.2010
Сообщений: 17
05.06.2010, 23:22  [ТС] #26
C
1
2
3
4
5
6
7
for (j=0; j<4; j++)
{
temp=a[0][j];
a[0][j]=a[m-i][j];
a[m-1][j]=temp;
//  cout<<temp;
}
переделал, все норм, только теперь вместо первой строчки все нули пишет
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
05.06.2010, 23:24 #27
a[0][j]=a[m-i][j];
Может всё-таки
a[0][j]=a[m-1][j];
FerMen
0 / 0 / 0
Регистрация: 15.05.2010
Сообщений: 17
05.06.2010, 23:42  [ТС] #28
ты прав. чет не внимательный я

Добавлено через 15 минут
спасибо тебе большое))
Alex5
1052 / 715 / 105
Регистрация: 12.04.2010
Сообщений: 1,810
05.06.2010, 23:56 #29
Цитата Сообщение от silent_1991 Посмотреть сообщение
Чтобы поменять элементы первой и последней строки, нужно сделать следующее:
C++
1
2
3
4
5
6
for (j = 0; j < cols; j++)
{
    temp = matrix[0][j];
    matrix[0][j] = matrix[rows - 1][j];
    matrix[rows - 1][j] = temp;
}
Можно сделать короче (так как matrix[i] - это указатель на i-ю строку)
C++
1
2
3
4
void* t;
t = matrix[0];
matrix[0] = matrix[rows-1];
matrix[rows-1] =  ( int* )t;
Поменять i-ю и j-ю строки
C++
1
2
3
4
5
6
if ( i>=0 && i<rows  && j >=0 && j<rows )
{
    void *t = matrix[i];
    matrix[i] = matrix[j];
    matrix[j] = (int*)t;
}
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
06.06.2010, 00:06 #30
А вы знаете, да, что-то я не подумал, что массив динамический... Ведь со статическим так не выйдет, или я ошибаюсь?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2010, 00:06
Привет! Вот еще темы с ответами:

Написать программу, которая вычерчивает на экране узор из 50 прямоугольников случайного размера и цвета - C++
Написать программу, которая вычерчивает на экране узор из 50 прямоугольников случайного размера и цвета. Зарание большое спасибО!

Перемножить матрицы произвольного размера - C++
#include &lt;iostream&gt; using std::cin; using std::cout; using std::endl; int main() { int n,m,c,r; //...

Класс, обеспечивающий представление матрицы произвольного размера - C++
помогите, Составить описание класса, обеспечивающего представление матрицы произвольного размера с возможностью изменения числа строк и...

Составить описание класса, обеспечивающего представление матрицы произвольного размера - C++
вариант1 Условие задачи: Составить описание класса, обеспечивающего представление матрицы произвольного размера с возможностью изменения...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.06.2010, 00:06
Ответ Создать тему
Опции темы

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