Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
lexatigr
0 / 0 / 0
Регистрация: 16.12.2010
Сообщений: 76
#1

Найти все ненулевые элементы матрицы и записать их в новый массив - C++

11.04.2011, 22:15. Просмотров 739. Ответов 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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
 
 
int main(int argc, char *argv[])
{
        int i,j,N,M;
        float** X;
       
       cout << "kol-vo strok v matr"; cin >> N;
       cout << "kol-vo stolbtsov v matr"; cin >> M;
  //выделяем память
             X = new float*[N];
             for (i = 0; i < N; i++)
          
                        X[i] = new float[M];
                        
 //ввод матрицы
        for ( i = 0; i < N; i ++ )
                for ( j = 0; j < M; j ++ ) {
                        printf ("X[%d][%d]=", i, j);
                        scanf ("%f", & X[i][j]);
                }
 
 
                printf("Matrica X\n");
                for ( i = 0; i < N; i ++ ) {
                        for ( j = 0; j < M; j ++ )
                                printf ( "%5.1f", X[i][j] );
                        printf("\n");
                         printf("\n");
                }
  float *Z;
  Z = new float[N]; 
  for (i = 0; i < N; i++)
 
   
   for ( i = 0; i < N; i ++ ) {
                        for ( j = 0; j < M; j ++ ){
                            if (X[i][j]!=0)
                             Z[i] = X[i][j];}
                           
                        printf ( "%5.1f", Z[i] );
  
                
}                    
//освобождаем, когда массив больше не нужен
   for (i = 0; i < N; i++)
                        delete X[i];
        delete[] X;
  
                system("PAUSE");
                return EXIT_SUCCESS;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2011, 22:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти все ненулевые элементы матрицы и записать их в новый массив (C++):

Записать в новый массив все элементы исходного массива, кратные заданному числу - C++
Напишите понятным языком.:cry: При помощи случайных чисел ввести одномерный массив,состоящий из 100 элементов. Записать в отдельный...

Записать в новый массив все элементы исходного массива, кратные заданному числу - C++
При помощи случайных чисел ввести одномерный массив , состоящий из 100 элементов .Записать в отдельный массив все его элементы кратные 5....

Записать все положительные элементы матрицы в массив arrP, а отрицательные - в массив arrN - C++
15. Заполнить квадратную матрицу случайными числами из диапазона от -10 до 10 ( функция). Записать все положительные элементы двумерного...

Все нулевые элементы матрицы увеличить на 5, ненулевые уменьшить в 2 раза - C++
В двумерном массиве (3х3) все нулевые элементы увеличить на 5 , ненулевые уменьшить в 2 раза .Пожалуйста проверьте программу и исправьте...

Все отрицательные элементы матрицы записать в одномерный массив. - C++
Дан двумерный массив размером mxn, заполненный целыми числами. Все его отрицательные элементы записать в одномерном массиве Заранее...

Все ненулевые элементы матрицы расположить в начале массива и подсчитать их количество - C++
Прошу помощи. Болел - ничего не понял. Скоро экзамен, а я ничего не понимаю в С++. Дали примерные задачи, а я не понимаю как решать. Вот...

2
ailia
28 / 27 / 1
Регистрация: 27.12.2009
Сообщений: 106
12.04.2011, 13:01 #2
вместо
C++
1
2
3
4
5
6
7
8
9
10
11
  float *Z;
  Z = new float[N]; 
  for (i = 0; i < N; i++)
 
   
   for ( i = 0; i < N; i ++ ) {
                        for ( j = 0; j < M; j ++ ){
                            if (X[i][j]!=0)
                             Z[i] = X[i][j];}
                           
                        printf ( "%5.1f", Z[i] );
вставь это
C++
1
2
3
4
5
6
7
8
9
10
11
12
float *Z; int z = 0;
Z = new float[N];   
for ( i = 0; i < N; i ++ ) 
{
for ( j = 0; j < M; j ++ )
{
if (X[i][j]!=0)
{Z[z] = X[i][j]; z++}
}
}
for(int i = 0; i < z; i++)
printf("%5.1f",Z[i]);
P.S: писал в браузере, так что возможны ошибки
0
vitaska
86 / 86 / 2
Регистрация: 04.02.2010
Сообщений: 162
12.04.2011, 14:33 #3
вот так все норм определяет, правда чуток больше кода))
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
#include <iostream>
#include <conio.h>
#include <iomanip>
 
using namespace std;
 
int nonZeroCount( float ** matr, int row, int col )
{
    int i, j, count = 0;
    for ( i = 0; i < row; i++ )
        for ( j = 0; j < col; j++ )
            if ( matr[ i ][ j ] )
                count++;
 
    return count;
}
 
int main(int argc, char *argv[])
{
    int i , j, rows, cols;
    float ** matrix;
 
    cout << "Input rows amount in matrix: "; 
    cin >> rows;
    cout << "Input cols amount in matrix: "; 
    cin >> cols;
    //выделяем память
    matrix = new float * [ rows ];
    for ( i = 0; i < rows; i++)
        matrix[ i ] = new float[ cols ];
 
    //ввод матрицы
    for ( i = 0; i < rows; i++ ) {
        for ( j = 0; j < cols; j++ ) {
            cout << "matrix[ " << i << " ][ " << j << " ] = ";
            cin >> matrix[ i ][ j ];
        }
    }
 
    cout << "\n\nMatrix:\n\n";
    for ( i = 0; i < rows; i++ ) {
        for ( j = 0; j < cols; j++ ) 
            cout << setw( 5 ) << setprecision( 1 ) << matrix[ i ][ j ];
        cout << "\n";
    }
    cout << endl << endl;
    //определяем количество ненулевых элементов матрицы
    int tmpSize = nonZeroCount( matrix, rows, cols );
 
    if ( tmpSize ) {
        int z = 0;
        //Если количество ненулевых элементов матрицы не равно 0
        //создаем массив размером количеством ненулевых элементов
        float * tmpMatr = new float [ tmpSize ];
        for ( i = 0; i < rows; i++ ) {
            for ( j = 0; j < cols; j++ ) {
                if ( matrix[ i ][ j ] ) {
                    tmpMatr[ z ] = matrix[ i ][ j ];
                    cout << setw( 5 ) << setprecision( 1 ) << tmpMatr[ z ];
                    z++;
                }
            }
        }
 
        delete [] tmpMatr;
 
        cout << endl << endl;
    }
    else
        cout << "\nMatrix does not have NULL elements\n";
             
    //освобождаем, когда массив больше не нужен
    for ( i = 0; i < rows; i++)
        delete matrix[ i ];
    delete [] matrix;
 
    _getch();
 
    return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2011, 14:33
Привет! Вот еще темы с ответами:

Все ненулевые элементы матрицы D(k,l) расположить в начале массива E(k∙l) и подсчитать из количество - C++
Задание: Все ненулевые элементы матрицы D(k,l) расположить в начале массива E(k∙l) и подсчитать из количество. Ребят,...

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

Преобразовать массив так чтобы все ненулевые элементы предшествовали нулевым - C++
Задан массив целых чисел, среди которых есть 0. Преобразовать массив так чтобы все ненулевые элементы предшествовали нулевым

Записать все нечетные элементы матрицы в один массив, а четные - в другой - C++
Гуру с++, помогите, пожалуйста, с задачкой! Все элементы матрицы М(3;5), имеющие нечетные значения записать в массив М1, а четные - в М2! ...


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

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

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