Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2014, 22:37   #1
IgoreKMaN
Пользователь
 
Регистрация: 24.04.2012
Сообщений: 88
Восклицание Каждый элемент строки разделить на сумму элементов строки

Доброго всем вечера! есть задачка на Си, пишу на Dev cpp, создать массив размерностью MxN и каждый элемент строки разделить на сумму элементов строки. Все работает только вот делит неправильно. Подскажите кто что сможет.
Код:

#include <iostream>
#include <stdlib.h>
#include<time.h>
#include <iomanip>
 
using namespace std;
 
int** AllocateMas(int, int);
void DeleteMas(int** mas, int);
void InputMas(int** mas, int, int);
void Delenie(int** mas, int, int);
 
int main()
{
   system("chcp 1251 > nul");
   srand(time(NULL));//для правильной работы рандомизатора
    int row,column;
    cout<<"введите размер маассива ";
    cin>>row;
    cin>>column;
    int **mas = AllocateMas(row, column);
    cout<<"Массив"<<"\n";
    InputMas(mas, row, column);
    Delenie(mas, row, column);
    DeleteMas(mas, row);
 return 0;
}
int** AllocateMas(int row, int column)
{
 
    int **mas = new int*[row];
    for(int i = 0; i < row; i++)
        mas[i] = new int[column];
 
    return mas;
}
 
void DeleteMas(int** mas, int row){
 
     for (int i = 0; i < row; i++)
         delete [] mas[i];
     delete [] mas;
}
void InputMas(int** mas, int row, int column){
 
 
     for(int i=0;i<row;i++)
    {
        for(int j=0;j<column;j++)
         {
            mas[i][j]=rand()%100;//заполняем массив
            cout << setw(3) << mas[i][j] << ' ';
         }
        cout<<"\n";
    }
 
}
void Delenie(int** mas, int row, int column){
    int min_i = 0;
    int min_j = 0;
    int s=0;
    int k=0,l=0;
    float mass[k][l];
     cout<<"РАзделенные элементы"<<"\n";
    for(int i = 0; i < row; i++){
        for(int j = 0; j < column; j++)
			
			
		{
        	s=s+mas[i][j];
			mass[k][l] = mas[i][j]/s;
		
			 cout<<mass[k][l]<<"\n";	
        }
    }
    
system("pause");
}

Последний раз редактировалось IgoreKMaN; 14.12.2014 в 22:42.
IgoreKMaN вне форума Ответить с цитированием
Старый 14.12.2014, 23:24   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

1. У вас сумма всех элементов, а не по строчно
2. Вы делите до того, как подсчитали сумму, т.е. на частичные суммы
3. результат деления вы всегда пишите в один и тот же элемент
4.
Код:
mass[k][l]
у вас нет такого элемента
p51x на форуме Ответить с цитированием
Старый 14.12.2014, 23:37   #3
IgoreKMaN
Пользователь
 
Регистрация: 24.04.2012
Сообщений: 88
Восклицание деление

Цитата:
Сообщение от p51x Посмотреть сообщение
4.
Код:
mass[k][l]
у вас нет такого элемента
почему нет???
Код:
int s=0;
    int k=0,l=0;
    float mass[k];
     cout<<"Разделенные элементы на сумму строки = "<<"\n";
вы имеете в виду
for(int i = 0; i < row; i++){
for(int j = 0; j < column; j++)


{
mass[k]=mass[k]+mas[i][j];
mas[k] = mas[i][j]/mas[k];

cout<<mas[k]<<"\n";
}
}
IgoreKMaN вне форума Ответить с цитированием
Старый 15.12.2014, 08:51   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
почему нет???
Потому что вы сами объявили
Код:
 float mass[k][l];
какие последние индексы могу быть?

Код:
int k=0,l=0;
    float mass[k];
Какой смысл создания массива из 0 элементов? Вас спасает только то, что компилятор выделяет с запасом и не наткнулись на что-нибудь серьезное в памяти.

Цитата:
вы имеете в виду
for(int i = 0; i < row; i++){
for(int j = 0; j < column; j++)


{
mass[k]=mass[k]+mas[i][j];
mas[k] = mas[i][j]/mas[k];

cout<<mas[k]<<"\n";
}
}
Чем это код лучше предыдущего? Вы также делите на частичные суммы. Зачем для сумм массив?
p51x на форуме Ответить с цитированием
Старый 15.12.2014, 22:16   #5
IgoreKMaN
Пользователь
 
Регистрация: 24.04.2012
Сообщений: 88
По умолчанию указатель

[QUOTE=p51x;1449085]Потому что вы сами объявили
Код:
 float mass[k][l];
я извиняюсь а как его нужно объявить??? разесните момент пожалуйста
IgoreKMaN вне форума Ответить с цитированием
Старый 16.12.2014, 08:19   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Странный вы или первый код не ваш? В С/С++ массивы нумеруются с 0, поэтому в массиве а[2] нет элемента а[2].
p51x на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить сумму элементов каждой строки матрицы A(NxM) , определить наименьшее значение этих сумм и номер соответствующей строки merilyn Помощь студентам 3 14.12.2013 11:39
Как каждый элемент массива разделить на модуль максимального значения aleksskay Microsoft Office Excel 5 09.06.2013 16:32
Найдите сумму элементов столбца и строки массива, на пересечении которых находится элемент. Serjant0007 Паскаль, Turbo Pascal, PascalABC.NET 1 25.03.2012 21:22
C++. найти сумму элементов строки, в которой расположен элемент с наименьшим значением. Снс Помощь студентам 2 18.10.2010 22:23
Си/Си++ Двумерная матрица, каждый её элемент разделить на диагональный, стоящий в том же столбце. Маришка_Курносова Помощь студентам 2 01.07.2010 21:06