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

Проблемы с массивами - C++

Восстановить пароль Регистрация
 
Developer
0 / 0 / 0
Регистрация: 19.09.2011
Сообщений: 37
02.11.2011, 23:31     Проблемы с массивами #1
Здравствуйте, уважаемые. Помогите пожалуйста с задачкой.
Создать программу, которая вводит c клавиатуры двумерный массив целых чисел, заносит в одномерный массив суммы неотрицательных элементов по строкам,
выводит этот массив на экран до первого нулевого элемента и отображает число оставшихся элементов.
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
// laba6.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
 
 
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
const int a=100, b=100;
const int c=100;
int i,k,j,m,n,suma,ost;
int arr [a][b];
int arrb [c];
 
cout<<"Razmernost massiva" ;
cin>>n>>m;
 
for (k=0;k<n;k++)
{
    
    for (j=0;j<m;j++)
    {cout<<"Vedite element stroki "<<k+1<<"stolbsa"<<j+1<< endl;
    cin>>arr[k][j];
     cout<<endl;
    
    }
}
for (k=0;k<n;k++)
{
    arrb[k]=0;
for (j=0;j<m;j++)
{
    if (arr[k][j]>0)
    {
        arrb[k]+=arr[k][j];
        cout<<arrb[k];
    if (arrb[k]!=0) cout<<arrb[k];
    else { cout<<m-j; break;}
}
}
}
    return 0;
}
Программа, к сожалению, работает процентов на 30 корректно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2011, 23:31     Проблемы с массивами
Посмотрите здесь:

C++ задача с массивами
C++ Работа с массивами
C++ Работа с массивами
C++ Ошибка с массивами
Работа с массивами C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
garkeP91
49 / 49 / 5
Регистрация: 24.10.2010
Сообщений: 131
02.11.2011, 23:39     Проблемы с массивами #2
сейчас сделаю
Developer
0 / 0 / 0
Регистрация: 19.09.2011
Сообщений: 37
02.11.2011, 23:47  [ТС]     Проблемы с массивами #3
Ну с запасом сделал А вдруг захотят вводить.
garkeP91
49 / 49 / 5
Регистрация: 24.10.2010
Сообщений: 131
02.11.2011, 23:56     Проблемы с массивами #4
Цитата Сообщение от Developer Посмотреть сообщение
выводит этот массив на экран до первого нулевого элемента...
это имеется ввиду двумерный исходный или одномерный сформированный?
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
03.11.2011, 00:08     Проблемы с массивами #5
значит не работает.
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
#include <iostream>
#include <stdlib.h>
 
int main (int argc, char** argv)
{
    int N, M;
 
    std::cout << "Enter the number of rows: ";
    std::cin  >> N;
    std::cout << "\nEnter the number of columns: ";
    std::cin  >> M;
    std::cout << std::endl;
 
    int **array_IN  = new int * [N];
    int *array_res = new int [N];
    std::cout << "Enter the " << N*M << " elements: " << std::endl;
    for ( int i = 0; i < N; i++ )
    {
        array_res[i] = 0;
        array_IN[i] = new int [M];
        for ( int j = 0; j < M; j++ )
        {
            std::cin >> array_IN[i][j];
            if ( array_IN[i][j] > -1 )  { array_res[i] += array_IN[i][j]; } 
        }
    }
 
    for ( int i = 0; i < N; i ++ )
    {
        for ( int j = 0; j < M; j++ )
            std::cout << "\t" << array_IN[i][j];
        std::cout << "\n";
    }
 
    //я не понимаю какой из 2 массивов надо выводить... ну да ладно
    std::cout << "\nResulted array:\n";
    for ( int i = 0; i < N; i++ )
    {
        if ( array_res[i] == 0 && !flag ) { std::cout << "The elements after '0':\n" << N - i; break;}
        std::cout << array_res[i] << "\t";
    }
 
 
    system("pause");
    return 0;
}
Добавлено через 1 минуту
возникнут вопросы - спрашивай быстрее, пока я не начал делать свою лабу. и ни кто помочь не может
garkeP91
49 / 49 / 5
Регистрация: 24.10.2010
Сообщений: 131
03.11.2011, 00:08     Проблемы с массивами #6
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
#include <iostream>
using namespace std;
int main()
{
    const int a=100, b=100;
    int i,j,m,n;
    int arr [a][b];
    int arrb [a];
    cout<<"Razmernost massiva: ";
    cin>>n>>m;
    for (i=0;i<n;i++)
    {
        for (j=0;j<m;j++)
        {   
            cout<<"Vvedite element ["<<i+1<<"]["<<j+1<<"]: ";
            cin>>arr[i][j];
        }
    }
    for (i=0;i<n;i++)
    {
        arrb[i]=0;
        for (j=0;j<m;j++)
            if (!(arr[i][j]<0))
                arrb[i]+=arr[i][j];
    }
    for(i=0; i<n; i++)
    {
        if (arrb[i]!=0)
            cout<<arrb[i]<<' ';
        else
        {
            cout<<"Chislo ostavshihsja elementov = "<<n-i<<endl;
            break;
        }
    }
    cout<<endl;
    return 0;
}
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
03.11.2011, 00:11     Проблемы с массивами #7
зачем выделять столько лишней памяти >_< а если дураку захочется ввести матрицу 101 на 101 ?
все. абзац. не работабельно.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
03.11.2011, 00:24     Проблемы с массивами #8
deleted
Developer
0 / 0 / 0
Регистрация: 19.09.2011
Сообщений: 37
03.11.2011, 01:22  [ТС]     Проблемы с массивами #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
43
44
45
46
47
48
49
// laba6.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
 
 
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
const int a=100, b=100;
const int c=100;
int i,k,j,m,n,suma,ost;
int arr [a][b];
int arrb [c];
 
lab: cout<<"Razmernost massiva" ;
cin>>n>>m;              //Ввод размерности массива
for (k=0;k<n;k++)
{
    
    for (j=0;j<m;j++)
        {cout<<"Vedite element stroki "<<k+1<<"stolbsa"<<j+1<< endl;
        cin>>arr[k][j]; // Ввод елементов массива
        cout<<endl;
        }
}
for (k=0;k<n;k++) 
{
    for (j=0;j<m;j++)
    {
        cout<<arr[k][j]<<" "; // Вывод елементов массива на монитор
    }
    cout<<endl;
}
cout<<endl;
for (k=0;k<n;k++)
{
    arrb[k]=0;
for (j=0;j<m;j++)       //Чтение строки
{
    if (arr[k][j]>0)
        arrb[k]+=arr[k][j]; //Сума  не отрицательных  для каждой строки 
}
        if (arrb[k]!=0) cout<<"Summa "<<k+1<<" "<<arrb[k]<<endl;
    else { cout<<"Ostalos "<<n-k-1; break;}
}
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2011, 01:34     Проблемы с массивами
Еще ссылки по теме:

Задачи с массивами C++
C++ работа с массивами
C++ работа с массивами

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

Или воспользуйтесь поиском по форуму:
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
03.11.2011, 01:34     Проблемы с массивами #10
это все здорово, но код весьма фиговый ) не оптимально.
C++
1
2
3
4
5
const int a=100, b=100;
const int c=100;
int i,k,j,m,n,suma,ost;
int arr [a][b];
int arrb [c];
пределы размерности жесткие. + почему второй массив с отдельной константой ? он ведь по любому размерностью совпадает с количеством строк матрицы.
да и от using namespace std; лучше отказаться как можно раньше. плохая привычка.

я ж написал в лучших традициях жанра
вот еще матрицы и массивы

Добавлено через 1 минуту
и транслитом лучше не пользоваться. либо русский, либо английский.
Yandex
Объявления
03.11.2011, 01:34     Проблемы с массивами
Ответ Создать тему
Опции темы

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