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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2015, 16:59   #1
schoolboy99
Пользователь
 
Регистрация: 11.02.2015
Сообщений: 57
По умолчанию Сумма столбцов,считает неправильно C++.

Добрый день!

Всё задание расписывать не буду,проблема в последнем действии,а именно подсчёте столбцов сформировавшейся матрицы

С этим возникла проблема,он просто неправильно считает....

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

Проверил каждую строку,переменная ведёт себя нормально,такое ощущение что недоприсвоил или недоинициализировал что-то...

Нужна подсказка.

П.С-Сделал через функции,чтобы не злить местных экспертов.

Код:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <iomanip>
#include <stdio.h>
#include <ctime>

using namespace std;

const size_t N=100;
const size_t M=100;
const int k=100;


void randchisla(int n,int m,int t1,int t2,int myArr[N][M])
{
 for (int i = 0; i < n; ++i)
	{
		for( int j = 0; j < m; ++j)
		{
  myArr[i][j] =t1+ rand() % (t2-t1);
	}
	 }
	cout<<"Полученные данные : "<<endl;
	cout<<"T = ";
	for(size_t i=0; i<n; ++i)
	{
		for( size_t j = 0; j < m; ++j)
		cout<<setw(4)<<myArr[i][j];
		cout<<"\n";
}
}

void findsum(int* sum,int m,int n,int myArr[N][M],int max,int myArr1[N][M])
{
for (int i = 0; i < n; ++i)
	{
		for(int j = 0; j < m; ++j)
		{
			sum[i]+=myArr[i][j];
		}
	}
		cout<<"T=";
			for(int i=0; i<n; i++)
	{
		for( int j = 0; j < m; j++)
		cout<<setw(4)<<myArr[i][j];
        cout << "  Сумма строки: ";
		cout<< sum[i] << endl;
}

int k=0, count=0;
	while (k<n)
	{
		for(int i=0; i<n; i++)
		{ 
			if (sum[i]>max) 
		{
			max=sum[i]; 
			count=i;
		}
		}
		for(int j=0; j<m; j++)
		{
			myArr1[k][j]=myArr[count][j];}
		sum[count]=0;
		max=0;
		count=0;
		k++;
	}
cout<<endl<<"****Упорядоченная матрица****"<<endl;
for(int i=0; i<n; i++)
		{	
			cout<<endl;
			for(int j=0; j<m; j++)
			{	
				cout<<myArr1[i][j]<<" ";
			}
}

}

void findmax(int myArr1[N][M],int myArr2[N][M],int myArr3[N][M],int m,int n,int min)
{
	 int  l=0, d=1,s=0;
for(int i=0; i<n; i++)
			for(int j=0; j<m; j++)
		{ 
			myArr2[i][j]=0;
		myArr3[i][j]=0;
			}

for( int j=0; j<m; j++)
{
	if (myArr1[0][j]<min)
	{
		min=myArr1[0][j];
		l=j;
	}
}
myArr3[0][l]=min;

for(int i=1; i<n; i++)
{
	for(int j=0; j<m; j++)
	{
		myArr2[i][j]=myArr1[i][j]+myArr3[i-1][j];
	}
	min=myArr2[d][0];
	l=0;
	for(int j=0; j<m; j++)
		myArr3[d][j]=myArr3[d-1][j]+myArr3[d][j];
	for(int j=0; j<m; j++)
		if (myArr2[d][j]<min) 
		{
			min=myArr2[d][j]; 
			l=j;
		}
		myArr3[d][l]=myArr1[d][l]+myArr3[d][l];
	
d++;
}
cout<<endl<<"*************************"<<endl;
for(int i=0; i<n; i++)
{	cout<<endl;
	for(int j=0; j<m; j++)

		cout<<myArr3[i][j]<<" ";	
}

	for (int i=0;i<n;i++)
	{
		 //s=0;
        for (int j=0;j<m;j++)
            if (myArr3[j][i])
                s+=myArr3[j][i];
		cout<<endl;
cout<<"Cумма столбца номер ="<<i<<"Равна="<<s<<endl;
}
}


int _tmain(int argc, _TCHAR* argv[])
{
	int i,j,t1,t2,n,m;
	int min=0;
	int max=0;
	int maximum=0;
	int nmin,ind1,ind2;
	int myArr[N][M];
    int myArr1[N][M]; 
	int myArr2[N][M];
	int myArr3[N][M];
	int myArr4[N][M];
	int myArr5[N][M];
	int sum[N]={0};
	int s=0;
	setlocale(LC_ALL,"Russian");
	cout<<"Введите число устройств"<<endl;
	cin>>m;
	cout<<"Введите количество работ"<<endl;
	cin>>n;
	cout<<"Начальное значение диапазона"<<endl;
    cin>>t1;
	cout<<"Конечное значение диапазона"<<endl;
	cin>>t2;
	randchisla(n,m,t1,t2,myArr);
	findsum(sum,m,n,myArr,max,myArr1);
	findmax(myArr1,myArr2,myArr3,m,n,min);
	system("pause");
	return 0;
}
Изображения
Тип файла: jpg Безымянный1111.jpg (61.0 Кб, 69 просмотров)
schoolboy99 вне форума Ответить с цитированием
Старый 22.03.2015, 17:20   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
//s=0;
А чего закомментировано?
Цитата:
if (myArr3[j][i])
Это вообще не нужно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.03.2015, 18:10   #3
schoolboy99
Пользователь
 
Регистрация: 11.02.2015
Сообщений: 57
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А чего закомментировано?

Это вообще не нужно.
s=0 я по тупости своей хотел объявить в цикле,но вовремя остановился

проверку убрал,но до сих пор не могу понять откуда он такие цифры при прибавлении берёт,при пошаговой компиляции именно на моменте прибавлении появляются откуда-то непонятные числа..

Сначало думал что переменные мешают но всё главное объявлено в мэйне,я просто передаю параметрами и не может же оно за передачу нахватать лишнего,1-ый раз просто с таким сталкиваюсь..
schoolboy99 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Калькулятор неправильно считает Jereme JavaScript, Ajax 1 03.02.2013 16:39
Неправильно считает excel Coy Microsoft Office Excel 2 02.05.2012 16:23
неправильно считает калькулятор -=Andriushka=- Помощь студентам 5 10.04.2011 01:14
C++ - а почему считает неправильно! Blondy Помощь студентам 2 25.02.2011 16:30
Неправильно считает Excel starsat1080 Помощь студентам 1 24.02.2011 08:37