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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2017, 13:03   #1
ggjgj
Пользователь
 
Регистрация: 25.10.2016
Сообщений: 83
По умолчанию Найдите ошибку в программе

В файле содержится двумерный массив размерностью n на n. В новый файл вывести отсортированный массив.
Отсортировать строки по возрастанию с помощью сортировки подсчетом.

В чем ошибка? В файл output выводит нули

Код:
#include "stdafx.h"
#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
ifstream in("input.txt");
ofstream out("output.txt");
void print(int **a, int n)
{
	out << n << endl;
	for (int i = 0; i<n; i++, out << endl)
		for (int j = 0; j<n; j++)
			out << setw(5) << left << a[i][j];
}
void Shet(int *a, int n)
{
	int min = a[0], max = a[0];
	int i, k;
	for (i = 0; i<n; i++)
	{
		if (a[i]<min) min = a[i];
		if (a[i]>max) max = a[i];
	}
	k = max - min + 1;
	int *d = new int[k];
	for (i = 0; i<k; i++)
		a[i] = 0;
	for (i = 0; i<n; i++)
		d[a[i] - min]++;
	int q = 0, j;
	for (i = 0; i<k; i++)
	{
		for (j = 1; j <= d[i]; j++)
		{
			a[q] = i;
			q++;
		}
	}
}
int main()
{
	int n;
	in >> n;
	int **a = new int*[n];
	for (int i = 0; i<n; i++)
		a[i] = new int[n];
	for (int i = 0; i<n; i++)
		for (int j = 0; j<n; j++)
			in >> a[i][j];
	for (int i = 0; i<n; i++)
		Shet(a[i], n);
	print(a, n);
	return 0;
}
Вложения
Тип файла: txt input.txt (56 байт, 111 просмотров)
Тип файла: txt output.txt (138 байт, 112 просмотров)
ggjgj вне форума Ответить с цитированием
Старый 06.04.2017, 15:56   #2
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Цитата:
Сообщение от ggjgj Посмотреть сообщение
for (i = 0; i<k; i++) a[i] = 0;
Тут надо обнулять массив d, а не a.

P.S. В процедуре Shet добавь в конец:
Код:
delete[] d;
a.k.a. Angelicos Phosphoros
Мой сайт

Последний раз редактировалось New man; 06.04.2017 в 15:58.
New man вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найдите ошибку в программе АнтонКурышов Паскаль, Turbo Pascal, PascalABC.NET 1 08.03.2016 16:44
Найдите ошибку в программе Proger16 Помощь студентам 11 31.03.2013 16:34
найдите ошибку lexa_7up Паскаль, Turbo Pascal, PascalABC.NET 2 19.01.2012 15:39
найдите ошибку=( NastyaSmile Паскаль, Turbo Pascal, PascalABC.NET 2 01.12.2011 08:32
НАЙДИТЕ ОШИБКУ В ПРОГРАММЕ svetah Помощь студентам 8 03.12.2008 15:19