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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 09.06.2009, 23:05   #1
Alexcomeback
Пользователь
 
Регистрация: 03.04.2009
Сообщений: 59
По умолчанию Удаление строк матрицы с мин. элементом

Уважаемые программисты, помогите найти ошибку
Задача состоит в том, чтобы удалить строки матрицы, содержащие минимальный элемент.
Написал код:
Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int main(void)
{
	int **ma, n, m, min=10, s, k=0 ;

	//vvod
	printf("Vvedite chislo strok: ") ;
	scanf("%d", &n) ;
	printf("Vvdite kol-vo stolbcov: ") ;
	scanf("%d", &m) ;
	ma=new int*[n*sizeof(int*)] ;
	for (int i=0; i < n; ++i) {
		 ma[i]=new int[m*sizeof(int)] ;
	}

	//inicializacia
	printf("ishodni massiv: \n") ;
	randomize() ;
	for (int i=0; i < n; ++i) {
		 for (int j = 0; j < m; ++j) {
			  ma[i][j]=random(10) ;
			  printf("%3d", ma[i][j]) ;
		 } printf("\n") ;
	}
	printf("\n") ;

	//Poisk min
	for (int i = 0; i < n; ++i) {
		for (int j = 0; j < m; ++j) {
			 if (ma[i][j]<=min) {min=ma[i][j] ;
			 }
		}
	}

	//nahodim i udalyaem stroki
	for (int i = 0; i < n; ++i) {
		for (int j = 0; j < m; ++j) {
			 if (ma[i][j]==min) { delete [i] ma ;
								  ma[i]=NULL ;
								  break ;
			 }
		}
	}

	printf("Poluchenni massiv: \n") ;
	//vivod
	for (int i = 0; i < n; ++i) {
		if (ma[i]!=NULL) {
			for (int j = 0; j < m; ++j) {
			 printf("%3d", ma[i][j]) ;
			} printf("\n") ;
		}
	}
проблемы две: выводит ошибку Acces violation (почему - не понимаю, вроде выхода за память нет..), выводит в конечном результате непонятный набор циферок (предпологаю мусор, но опять же, почему..)
Заранее спасибо
Alexcomeback вне форума
Старый 10.06.2009, 00:46   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Access Violation не увидел. Вот так
Код:
delete [i] ma ;
неправильно.

Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
	int **ma, n, m, min=10, s, k=0 ;

	//vvod
	printf("Vvedite chislo strok: ") ;
	scanf("%d", &n) ;
	printf("Vvdite kol-vo stolbcov: ") ;
	scanf("%d", &m) ;
	ma=new int*[n*sizeof(int*)] ;
	for (int i=0; i < n; ++i) {
		 ma[i]=new int[m*sizeof(int)] ;
	}

	//inicializacia
	printf("ishodni massiv: \n") ;
	srand(time(NULL)) ;
	for (int i=0; i < n; ++i) {
		 for (int j = 0; j < m; ++j) {
			  ma[i][j]=rand()%10 ;
			  printf("%3d", ma[i][j]) ;
		 } printf("\n") ;
	}
	printf("\n") ;

	//Poisk min
	for (int i = 0; i < n; ++i) {
		for (int j = 0; j < m; ++j) {
			 if (ma[i][j]<=min) {min=ma[i][j] ;
			 }
		}
	}

	//nahodim i udalyaem stroki
	for (int i = 0; i < n; ++i) {
		for (int j = 0; j < m; ++j) {
			 if (ma[i][j]==min) {
                                     delete[]  ma[i] ;
			    ma[i]=NULL ;
			    break ;
			 }
		}
	}

	printf("Poluchenni massiv: \n") ;
	//vivod
	for (int i = 0; i < n; ++i) {
		if (ma[i]!=NULL) {
			for (int j = 0; j < m; ++j) {
			 printf("%3d", ma[i][j]) ;
			} printf("\n") ;
		}
	}

for(int i=0; i<n; i++)
 if(ma[i]!=NULL) delete[] ma[i];
delete[] ma;

getch();
return 0;
}
И память не забывайте освобождать в конце.

Код:
Vvedite chislo strok: 5
Vvdite kol-vo stolbcov: 5
ishodni massiv:
  8  5  5  9  5
  0  9  2  8  5
  8  1  6  1  2
  3  5  0  6  0
  3  0  4  2  6

Poluchenni massiv:
  8  5  5  9  5
  8  1  6  1  2
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 10.06.2009, 09:47   #3
Alexcomeback
Пользователь
 
Регистрация: 03.04.2009
Сообщений: 59
По умолчанию

а.. Понял. Огромное спасибо за помощь!)
Alexcomeback вне форума
Старый 05.09.2009, 14:51   #4
ABTOPuTET
Новичок
Джуниор
 
Регистрация: 13.05.2009
Сообщений: 2
По умолчанию

А кто может написать функцию удаления и вывод на паскале...??Очень надо...а то я в си не силен..но остальное,что как смог на паскаль(делфи) сам перевл.
Буу очень благодарен.

Модератор: это раздел C++. Закрыто.

Последний раз редактировалось Sazary; 05.09.2009 в 18:11.
ABTOPuTET вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск мин., удаление эл-ов массива Dmitrич Общие вопросы C/C++ 2 01.06.2009 13:31
Получить новый одномерный массив В,каждый элемент которого равен мин элементу строк исходной матрицы Artimbulidor Помощь студентам 6 29.12.2008 18:51
скалярное произведение строки с наибольшим элементом и столбца с наименьшим элементом katya36 Помощь студентам 15 20.12.2008 17:48
Матрицы.переставить строку с максимальным элементом на главной диагонали со строкой с заданным номмером м microlab Помощь студентам 3 07.11.2008 09:49
выделить в одномерный массив строку матрицы с максимальном элементом 7karandashik7 Паскаль, Turbo Pascal, PascalABC.NET 9 03.07.2008 14:43