Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Ответ
 
Опции темы
Старый 14.12.2017, 01:45   #1
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 412
Репутация: 102
По умолчанию Удалить элементы двумерного массива си

Добрый вечер. Нужно удалить элементы двумерного массива, которые меньше числа first
Код:

for(int i=0;i<N;i++)
	{
		size=N;
		for(int j=0;j<N;j++)
		{	
			if(mtx[i][j]<first)
			{
				 for(int ix = j; ix < size-1 ; ix++)
				 {
					   mtx[i][ix] = mtx[i][ix+1];
				 }
				
				 size--;
				 s[k]=size;
			
			}
		}
		 
		k++;
	}



	k=0;
	printf("Your matrix after deleting\n");
	for(int i=0;i<N;i++)
	{
		for(int j=0;j<s[k];j++)
			printf("%f\t",mtx[i][j]);
		printf("\n");
		k++;
	}

Подскажите пожалуйста, почему когда новая строка начинается с числа,которое следует удалить, удаление происходит неверно?
Вероника99 вне форума   Ответить с цитированием
Старый 14.12.2017, 15:47   #2
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 412
Репутация: 102
По умолчанию

Не подскажете?Я так и не поняла, почему удаление ненужных чисел происходит не во всех случаях?
Вероника99 вне форума   Ответить с цитированием
Старый 14.12.2017, 16:25   #3
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,354
Репутация: 5274
По умолчанию

выложите полный текст программы. массив s[] где задаётся?
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 14.12.2017, 16:39   #4
gantzboss
Пользователь
 
Регистрация: 02.11.2017
Сообщений: 31
Репутация: 26
По умолчанию

Цитата:
Сообщение от Вероника99 Посмотреть сообщение
size-1
может проблема в этом
gantzboss вне форума   Ответить с цитированием
Старый 14.12.2017, 16:51   #5
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 412
Репутация: 102
По умолчанию

Код:

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
#define N 3



int main()
{
	int size=N;
	float **mtx = (float **)malloc(N * sizeof(float *));
	for(int i=0;i<N;i++)
		 mtx[i] = (float *)malloc(N* sizeof(float));
	
	printf("Enter elements to matrix\n");
	for(int i=0;i<N;i++)
			for(int j=0;j<N;j++)
				scanf("%f",&mtx[i][j]);

	
	printf("Your matrix\n");
	for(int i=0;i<N;i++)
	{
		for(int j=0;j<N;j++)
			printf("%f\t", *(*(mtx + i) + j) );
		printf("\n");
	}

	float first=mtx[0][0];
	int s[N],k=0;
	printf("First element = %f\n",first);

	for(int i=0;i<N;i++)
	{
		size=N;
		for(int j=0;j<N;j++)
		{	
			if(mtx[i][j]<first)
			{
					
				 for(int ix = j; ix < size-1 ; ix++)
				 {
					
					   mtx[i][ix] = mtx[i][ix+1];
				 }
				 size--;
				 s[k]=size;
			
			}
		
		}
		 
		k++;
	}
	
	k=0;
	printf("Your matrix after deleting\n");
	for(int i=0;i<N;i++)
	{
		for(int j=0;j<s[k];j++)
			printf("%f\t",mtx[i][j]);
		printf("\n");
		k++;
	}
	
	return 0;
}

Вероника99 вне форума   Ответить с цитированием
Старый 14.12.2017, 16:53   #6
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 412
Репутация: 102
По умолчанию

Цитата:
Сообщение от gantzboss Посмотреть сообщение
может проблема в этом
Пробовала по-разному: и size-1, и size, и int ix = j-1; и т.д. Ничего не помогало
Вероника99 вне форума   Ответить с цитированием
Старый 14.12.2017, 17:02   #7
gantzboss
Пользователь
 
Регистрация: 02.11.2017
Сообщений: 31
Репутация: 26
По умолчанию

может надо удалять первый элемент?
хотя нет он первым проходом удаляет

Последний раз редактировалось gantzboss; 14.12.2017 в 17:09.
gantzboss вне форума   Ответить с цитированием
Старый 14.12.2017, 17:33   #8
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 412
Репутация: 102
По умолчанию

Мне уже подсказали,надо было заменить цикл
Код:

for(int j=0;j<N;j++) 
на 
for(int j = N - 1; j >= 0; j--)

и s[k]=size; добавить после if.
Вероника99 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Просуммировать элементы двумерного массива NxM Фима Общие вопросы Delphi 1 08.12.2015 14:53
Фортран. Удалить из массива нулевые элементы, передвинув на их место следующие элементы без нарушения порядка.. katya2.5 Помощь студентам 0 27.12.2013 21:01
Как обнулить элементы строки двумерного массива, содержащей наибольшее количество элементов одномерного массива griignat Помощь студентам 1 22.11.2011 20:04
Ввести элементы динамического двумерного массива Alexeytur Помощь студентам 1 28.01.2011 11:01
Максимальные элементы двумерного массива Jasper92 Общие вопросы C/C++ 0 17.12.2009 16:23


02:18.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru