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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2011, 00:51   #1
kefirkamm
 
Регистрация: 22.12.2011
Сообщений: 5
По умолчанию некорректный код... удалить строки в матрице

нужно удалить строки, в которых все элементы отрицательные. я что-то сделала. ошибки с выводом.. и логика какая-то ... женская. помогите исправить или свое напишите
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication7
{
    class Program
    {
        // функция
        public static void SumStolb(out int[,] a, int n, int m, int p, int[] sb)
        {
            int i, j;
            int s = 0;
            int smax = 0;
            a=new int [p,n];
            for (j = 0; j < m; j++)
            {
                s = 0;
                for (i = 0; i < n; i++)
                    if (a[i, j] > 0)
                    {
                        // нахожд. суммы пол.эл-в каждого столбца
                        s = s + a[i, j];
                    }
                //нах-е столбца с макс суммой
                if (j == 0)
                {
                    smax = s;
                }
                else
                {
                    if (s > smax)
                    {
                        smax = s;

                    }
                }
                sb[j] = s; // определение одномерного массива


            }



            for (i = 0; i < p - 1; i++) //вывод матрицы без столбца макс. суммой элементов
            {
                while (i <= m) ;





                int k = 0;
                for (j = 0; j < n; j++)
                {
                    if (a[i, j] < 0)
                    {
                        k++;
                        if (k == n)
                        {
                            if (i == m)
                            {
                                m = m - 1;

                            }
                            else
                            {
                                for (p = i; p < n; p++)
                                {
                                    for (j = 1; j < m; j++)
                                    {
                                        a[p, j] = a[p + 1, j];
                                        m = m - 1;
                                    }
                                }
                            }

                        }
                        else i++;

                    }


                }

            }


        }

        // головная программа
        static void Main(string[] args)
        {
            int n, m;
            Console.Write("n=");
            n = Convert.ToInt32(Console.ReadLine());
            Console.Write("m=");
            m = Convert.ToInt32(Console.ReadLine());
            int[,] a = new int[n, m];
            int[] ss = new int[m]; //формирование нового массива из сумм пол. эл-в  столбцов 
            int i, j, p;
            //ввод элементов
            for (i = 0; i < n; i++)
            {
                for (j = 0; j < m; j++)
                {
                    Console.Write("a[{0},{1}]=", i, j);
                    a[i, j] = Convert.ToInt32(Console.ReadLine());
                }
            }
            p = n;



            //вывод элементов
            System.Console.WriteLine("Out Array");//текст в консоли
            for (i = 0; i < n; i++)
            {
                for (j = 0; j < m; j++)
                {
                    Console.Write(a[i, j] + "\t");
                }

                Console.WriteLine();
            }


            SumStolb(out a, n, p, m, ss);// обращение к функции
            System.Console.WriteLine("Out sum pol columns");// текст в консоли

            //Вывод массива одномерного
            for (i = 0; i < n; i++)
                Console.Write(ss[i] + "\t");
            Console.WriteLine();

            //вывод нового двумерного массива
            System.Console.WriteLine("Out Array");//текст в консоли
            for (p = 0; p < n; i++)
            {
                for (j = 0; j < m; j++)
                {
                    if (m == 0)
                    {
                        Console.Write("все строки удалены");
                    }
                    else

                        Console.Write(a[p, j] + "\t");
                    Console.WriteLine();
                }

                //Вывод конечных результатов в явном виде
                //окончание
                Console.Write("Press any key for continue");
                Console.ReadKey();

            }

        }
    }

}
kefirkamm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить методом сдвига столбцы в матрице Zil131 Помощь студентам 0 11.11.2011 16:09
В матрице, удалить столбец, элемент которого, кратный 5 SeregaTihonov Общие вопросы C/C++ 5 26.03.2011 14:01
Даны строки S и S0. Удалить из строки S все подстроки, совпадающие с S0 . Если совпадающих подстрок нет, Шпунюся Помощь студентам 1 16.12.2010 21:02
Сумма столбца и строки в матрице Lordigan Помощь студентам 2 18.03.2010 18:24