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

Подсчитать сумму элементов строки в массиве и присвоить значение первому элементу - C++

Восстановить пароль Регистрация
 
Ketler
 Аватар для Ketler
0 / 0 / 0
Регистрация: 02.07.2011
Сообщений: 15
28.09.2011, 21:09     Подсчитать сумму элементов строки в массиве и присвоить значение первому элементу #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void raschet (int x[I][J], int &nul , int &kol )
{ nul=0, kol=0; int i,j,z ;
    for (int i=0; i<I; i++)
    {
        x[i][0]=0;
         z+= x[i][j];
    }
          
    for (int j=0; j<J; j++)
x[i][0] =  z;
    
 
}
по замыслу функция должна подсчитывать сумму элементов строки в массиве и присваивать это значение первому элементу массива. Ан не работает... Как это можно исправить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2011, 21:09     Подсчитать сумму элементов строки в массиве и присвоить значение первому элементу
Посмотрите здесь:

C++ Найти количество элементов массива, равных первому элементу
Найти количество элементов последовательности, кратных ее первому элементу C++
C++ Найти сумму и количество положительных элементов, предшествующих первому нулевому элементу массива
В одномерном массиве определить количество элементов, равных первому положительному элементу C++
Переменной t присвоить значение true если в массиве x нет нулевых элементов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.09.2011, 21:22     Подсчитать сумму элементов строки в массиве и присвоить значение первому элементу #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Ketler Посмотреть сообщение
по замыслу функция должна подсчитывать сумму элементов строки в массиве и присваивать это значение первому элементу массива
тогда почему у вас на входе двумерный массив? ваша программа противоречит вашим словам, а в программировании принято называть вещи своими именами - описание должно точно соответствовать действию
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
void sum_of_array(int* arr, int size)
{
    for (int* i = arr + 1, *end = arr + size; i != end; ++i)
        *arr += *i;
}
 
int main()
{
    int arr[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
    for (int i = 0; i < 3; ++i)
    {
        sum_of_array(arr[i], 3);
        std::cout << arr[i][0] << '\n';
    }
    return 0;
}
Петррр
 Аватар для Петррр
5915 / 3352 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
28.09.2011, 21:31     Подсчитать сумму элементов строки в массиве и присвоить значение первому элементу #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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
void fill_row(int *row, int count)
{
    while (count--)
        *row++ = rand() %100;
}
 
void fill_matrix(int **matrix, int rows, int columns)
{
    while (rows--)
        fill_row(matrix[rows], columns);
}
 
void show_row(int *row, int count)
{
    while (count--)
        printf("%3d ", *row++);
}
 
void show_matrix(int **matrix, int rows, int columns)
{
    while (rows--)
    {
        show_row(matrix[rows], columns);
        printf("\n");
    }
}
 
int sum_row(int *row, int count)
{
    int sum = 0;
    while (count--)
        sum += *row++;
    return sum;
}
 
void set_sum_in_column(int **array, int rows, int columns)
{
    int i;
    for(i = 0; i < rows; i++)
        array[i][0] = sum_row(array[i], columns);
}
 
int main(int argc, char ** argv)
{
    const int rows = 4;
    const int columns = 5;
    int i;
    int **array;
    srand(time(0));
    if (!(array = (int**)malloc(sizeof(int*) * rows)))
        return EXIT_FAILURE;
    for(i = 0; i < rows; i++)
        if (!(array[i] = (int*)malloc(sizeof(int) * columns)))
            return EXIT_FAILURE;
    fill_matrix(array, rows, columns);
    show_matrix(array, rows, columns);
    set_sum_in_column(array, rows, columns);
    printf("\b______________\n");
    show_matrix(array, rows, columns);
    for(i = 0; i < rows; i++)
        free(array[i]);
    free(array);
    system("pause");
    return 0;
}
Ketler
 Аватар для Ketler
0 / 0 / 0
Регистрация: 02.07.2011
Сообщений: 15
28.09.2011, 21:39  [ТС]     Подсчитать сумму элементов строки в массиве и присвоить значение первому элементу #4
Извиняюсь, неправильно сформулировал задание.
Функция подсчитывает сумму элементов в каждой строке массива и присваивает это значение первому элементу этой-же строки массива.
Или x[i][0]=x[i][0] +....+ x[i][N]
Надеюсь так понятнее.
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
29.09.2011, 01:02     Подсчитать сумму элементов строки в массиве и присвоить значение первому элементу #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Ketler,
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
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <ctime>
 
int** sum_row(int **mat, int rows, int cols);
 
int main()
{
    srand(time(NULL));
    int **mat;
    int rows,cols;
    std::cout<<"Enter number rows -> ";
    std::cin>>rows;
    mat = new int*[rows];
    std::cout<<"Enter number cols -> ";
    std::cin>>cols;
    std::cout<<"Matrix: "<<std::endl;
     for(int i=0; i<rows; i++)
     {
         mat[i] = new int[cols];
          for(int j=0; j<cols; j++)
          {
              mat[i][j]=rand()%25;
              std::cout<<std::setw(5)<<mat[i][j]<<std::setw(5);
          }
         std::cout<<std::endl;
     }
    sum_row(mat,rows,cols);
    std::cout<<"New matrix:"<<std::endl;
    for(int i=0; i<rows; i++)
     {
          for(int j=0; j<cols; j++)
          {
              std::cout<<std::setw(5)<<mat[i][j]<<std::setw(5);
          }
         std::cout<<std::endl;
     }
    system("pause");
    return EXIT_SUCCESS;
}
 
// sum elements of strin
 
int** sum_row(int **mat, int rows, int cols)
{
     for(int i=0; i<rows; i++)
     {
         for(int j=1; j<cols; j++)
         {
             mat[i][0]+=mat[i][j];
         }
     }
    return mat;
}
Yandex
Объявления
29.09.2011, 01:02     Подсчитать сумму элементов строки в массиве и присвоить значение первому элементу
Ответ Создать тему
Опции темы

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