Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Наруто_Узумаки
1 / 1 / 0
Регистрация: 08.11.2008
Сообщений: 5
#1

Помогите с удалением строки матрицы - C++

08.11.2008, 20:08. Просмотров 651. Ответов 6
Метки нет (Все метки)

Доброго времени суток всем!
Такая ситуация, что нужно удалить методом сдвига из матрицы строку, сумма элементов котороя равна 0. Я вот функцию обработки вроде как сделал, то вопрос в правильности ее работы. Посмотрите плиз и скажите что не правильно:
--------------------------------
Код
for(i=0;i<n;i++)
 for(j=0;j<m;j++)
  { while(j<m)
     summ=summ+a[i][j];
    if(summ==0)
     a[i][j]=a[i+1][j];
  }
----------------------------------
С уважением, Наруто!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2008, 20:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Помогите с удалением строки матрицы (C++):

Помогите с удалением - C++
Такая проблема не могу понять как сделать: пользователь вводит текст длиной не больше 250 символом, конец ввода символ /. Потом...

Помогите с удалением из файла - C++
Возникла такая проблема: Создана структура, запоняю ее, когда делаю запись в файл (каждая запись по 100 байт) потом считываю информацию с...

обработка строки с удалением и добавлением элементов - C++
Приветствую! Не могу решить задачу на С с использованием динамических массивов: Дано целое число N(&gt;0) и строка S. Преобразовать строку...

Помогите дописать код: Перевернуть все нечетные строки матрицы - C++
Если что -то не правильно( а оно там есть) помогите исправить! Задача:Перевернуть все нечетные строки матрицы.(Использовать функции)! ...

Реализовать функцию Delete(s, i, n), возвращающую строку, полученную удалением из строки s n символов - C++
Реализовать функцию Delete(s, i, n), возвращающую строку, полученную удалением из строки s n символов, начиная с i-го. Не использовать...

Определить, что все элементы строки первой матрицы больше соответствующих элементов строки второй матрицы - C++
Помогите,пожалуйста,с решением массивов в с++.надо в статическом и динамическом варианте. Даны две целочисленные квадратные матрицы...

6
XuTPbIu_MuHTAu
Эксперт С++
2229 / 744 / 10
Регистрация: 27.05.2008
Сообщений: 1,498
08.11.2008, 20:42 #2
хмм...я просто обязан здесь отписаться,ув. Наруто

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

так вот,у тебя тут вижу три вложенных цикла. for,for,while. Вопрос... Зачем while? суммируешь вторым for-ом очередную строку.После for'a сравниваешь с нулем сумму. Если ноль - делаешь сдвиг(кстати,у тебя сдвига вообще тут нет ). Потом обнуляешь сумму,чтобы при следующем проходе правильно считалось.


P.S с тебя sexy no jitsu
0
Наруто_Узумаки
1 / 1 / 0
Регистрация: 08.11.2008
Сообщений: 5
08.11.2008, 21:00  [ТС] #3
а как мне собственно сдвиг зафигачить, сенсей?
0
XuTPbIu_MuHTAu
Эксперт С++
2229 / 744 / 10
Регистрация: 27.05.2008
Сообщений: 1,498
08.11.2008, 21:09 #4
На первом шаге ты научился пробегать по всем строкам,на втором по всем элементам внутри каждой строки.Для третьего шага тебе нужно совместить результаты первых двух,но теперь все сложнее! Вот,не могу я по сюжетной линии отмазаться,там ты должен был сам пройти второй шаг,без подсказок. Здесь же намекну,Что сдвиг - это еще один цикл. Если N-я строка - с суммой ноль,то тебе нужно все строки,начиная с N+1-й скопировать на предыдущую строку. Это и будет сдвиг.Но копировать нужно не только первый элемент,а всю строку целиком.Из какого-то там шага ты знаешь,что делается это циклом.Дерзай,короче. А я пойду добывать информацию,как обычно,ну ты же знаешь меня

Добавлено через 1 минуту 49 секунд
cтоп,я ж акацка. нестыковка. Ты на темную сторону силы ступил,Наруто.
0
Наруто_Узумаки
1 / 1 / 0
Регистрация: 08.11.2008
Сообщений: 5
08.11.2008, 21:16  [ТС] #5
спасибо, ну я собственно и скопировал
a[i][j]=a[i+1][j];

или это не то?
0
XuTPbIu_MuHTAu
Эксперт С++
2229 / 744 / 10
Регистрация: 27.05.2008
Сообщений: 1,498
08.11.2008, 21:36 #6
Гхм. Первый цикл for пробегает все строки.
Второй цикл for пробегает от начала строки до конца. Но почему-то внутри него еще один while,который делает то же самое. После этого один(!) раз копируется первый элемент текущей строки в первый элемент следующей,после чего то же самое повторяется для следующих строк.

Вот тебе такой код. Посмотри,что там. Код ужасный,никому не говори,что это я написал,а то акацки высмеют нафиг. Лишь для демонстрации того,что происходит.

Код
#include <stdio.h>
#include <conio.h>
int main () {
    int n = 3,m = 5;
    int ** arr = new int * [n];
    int summ =0;
    int i,j,k;
    for(i=0;i<n;i++) arr[i]=new int[m];
//input
    for (i=0;i<n;i++) {
        for(j=0;j<m;j++) {
            scanf("%d",&arr[i][j] );
        };

    };

    // 
    for(i=0;i<n;i++) { 

        for(j=0;j<m;j++)summ+=arr[i][j];
        
        if(summ==0) {
            for(k=i+1;k<n;k++) { // copying row to previous.
                for(j=0;j<m;j++) {
                    arr[k-1][j]=arr[k][j];
                };
            };
            n--;
            i--;// there is another row there right now.
        };
        summ =0;
    };
    //output
    for (i=0;i<n;i++) {
        for(j=0;j<m;j++) {
            printf("%d ",arr[i][j] );
        };
        printf("\n");

    };

    getch();
    return 0;
};
На самом деле все совсем не так должно быть.Но я не уверен,что с динамической памятью ты уже работал. Поэтому использовал динамическую как статичную,фактически.ладно,развлекайся.
0
Наруто_Узумаки
1 / 1 / 0
Регистрация: 08.11.2008
Сообщений: 5
08.11.2008, 21:50  [ТС] #7
Спасибо тебе огромное очень выручил!!! я просто пока учусь в колледже, у нас ета тема ток начинается, думаю скоро буду разбираться лучше в программировании.
Кстати, меня Серегой зовут
0
08.11.2008, 21:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2008, 21:50
Привет! Вот еще темы с ответами:

умножить элемент каждой строки первой матрицы на наибольшее из значений элементов соответствующей строки второй матрицы - C++
Даны две действительные квадратные матрици порядка n. Получить новую матрицу: умножением элементов каждой строки первой матрици на...

Динамический массив. Характеристикой строки целочисленной матрицы назовем сумму ее положительных четных элементов. Переставляя строки заданной матрицы - C++
#include &lt;iostream.h&gt; #include &lt;math.h&gt; #include &lt;string.h&gt; int kol_vo(int **a, int n, int m); int main() { int...

Найти среднее арифметическое элементов каждой строки матрицы Q (lm) и отнять его от элементов этой строки. размер матрицы 7х7.заранее спасибо - C++
Найти среднее арифметическое элементов каждой строки матрицы Q (lm) и отнять его от элементов этой строки.. размер матрицы 7х7.заранее...

умножением элементов каждой строки первой матрицы на наибольший из элементов соответствующей строки второй матрицы - C++
получить новую матрицу умножением элементов каждой строки первой матрицы на наибольший из элементов соответствующей строки второй...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.