Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Помогите. Решение СЛАУ методом простых итераций, Пожалуйста скиньте прогу 
:(
    Опции темы
ravchuk
Дата 6.5.2008, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 6.5.2008

Репутация: нет
Всего: нет



Скиньте пожалуйста прогу, буду очень благодарен, очень нужно

Добавлено через 1 минуту и 54 секунды
на C#
PM MAIL   Вверх
archimed7592
Дата 6.5.2008, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: нет
Всего: 93



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
t_gran
Дата 6.5.2008, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 621
Регистрация: 13.11.2007
Где: г.Усть-Илимск

Репутация: 33
Всего: 37



Странно, в названии темы язык указан C++, а ты просишь на C#.


--------------------
Я знаю, что ничего не знаю© Сократ
user posted image
PM MAIL WWW   Вверх
kosmonaFFFt
Дата 6.5.2008, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



smile Лови, может подойдет.

Код

/*
 * Created by SharpDevelop.
 * User: 0lmer
 * Date: 03.03.2008
 * Time: 8:59
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
 
using System;
using System.Collections.Generic;
using System.Text;

namespace vm2
{
    class Program
    {
     public static Double Norma(Double [] X1, Double [] X2, Int32 N)
     {
         Double [] Temp = new Double [N];
         for (Int32 i = 0; i < N; ++i)
         {
             Temp[i] = Math.Abs(X1[i] - X2[i]);
         }
         Double Max = Temp[0];
         for (Int32 i = 1; i < N; ++i)
         {
             if (Max < Temp[i])
             {
                 Max = Temp[i];
             }
         }
         return Max;
     }
     
        //F-ya preobrazovaniya stroki v massiv Double.
        public static Double[] StringToDoubleArray(String fromStr, Int32 size)
        {
            Double[] retArray = new Double[size];  //Vozvrashaemoe znachenie.
            String str = "";  //Vspomogatel'naya stroka.
            Int32 arrIndex = 0;
            //Posimvol'nyi perebor stroki.
            for (Int32 i = 0; i < fromStr.Length; ++i)
            {
                //Dobavlyat' simvoly v str poka ne budet probela.
                if ((fromStr[i] == ' '))
                {
                    retArray[arrIndex] = Double.Parse(str);
                    ++arrIndex;
                    str = "";
                }
                else if (i == (fromStr.Length - 1))
                {
                    str += fromStr[i];
                    retArray[arrIndex] = Double.Parse(str);

                }
                //Esli probel - preobrazovanie i dobalenie v massiv.
                else
                {
                    str += fromStr[i];
                }
            }
            str = null;
            return retArray;
        }
        
        //Sformirovat' B i e.
        public static void GetBe(Double [][] A, Double [] b, Int32 N, out Double [][] B, out Double [] e)
        {
         //Vydelenie pamyati pod B i e.
         B = new Double [N][];
         for (Int32 i = 0; i < N; ++i)
         {
             B[i] = new Double [N];
         }
         e = new Double [N];
         //Formirovanie e i nulei na glavnoi diagonali v B.
         for (Int32 i = 0; i < N; ++i)
         {
             e[i] = b[i] / A[i][i];
             B[i][i] = 0;
         }
         //Fromirovanie B.
         //Cikl vniz.
         for (Int32 i = 0; i < N; ++i)
         {
             //Cikl vpravo.
             for (Int32 j = 0; j < N; ++j)
             {
                 if (i == j)
                 {
                     continue;
                 }
                 else
                 {
                     B[i][j] = - (A[i][j] / A[i][i]);
                 }
             }
         }
        }

        static void Main(string[] args)
        {
            //Proverka kol-va peredannyh parametrov.
            if (args.Length == 1)
            {
                //Esli zapros pomoshi - vyvesti.
                if ((args[0] == "-h") || (args[0] == "--help"))
                {
                    Console.WriteLine("\t\tPowered by 0lmer");
                    Console.WriteLine("Dlya resheniya zapusti programmu s parametrami -r N EPSILON");
                    Console.WriteLine("N - razmernost' glavnoi matricy.");
                    Console.WriteLine("EPSILON - zadannaya tochnost'.");
                    Console.WriteLine("Dopolnitel\'nye parametry:");
                    Console.WriteLine("B - vyvasti B,");
                    Console.WriteLine("e - vyvesti e,");
                    Console.WriteLine("i - vyvesti kolichestvo iteracii,");
                    Console.WriteLine("x - vyvesti vektor x.");
                }
            }
            else if (args.Length == 3)
            {
                if (args[0].Contains("-r"))
                {
                    Int32 N;  //Razmernost' matricy sistemy.
                    //I popytka ee schitat'.
                    try
                    {
                        N = Int32.Parse(args[1]);
                    }
                    catch (Exception exc)
                    {
                        Console.WriteLine("ERROR!!! Nevernyi vtoroi parametr");
                        Console.Read();
                        return;
                    }
                    //Proverka na otricatel'nuyu razmernost'.
                    if (N <= 0)
                    {
                        Console.WriteLine("ERROR!!! Nevernaya razmernost'!!!");
                        Console.Read();
                        return;
                    }
                    Double Epsilon; //Zadannaya tochnost' i popytka ee chitat'.
                    try
                    {
                        Epsilon = Double.Parse(args[2]);
                    }
                    catch (Exception exc)
                    {
                        Console.WriteLine("ERROR!!! Nevernyi tretii parametr");
                        Console.Read();
                        return;
                    }
                    //Ishodnaya matrica.
                    Double [][] A = new Double [N][];
                    for (Int32 i = 0; i < N; ++i)
                    {
                     A[i] = new Double [N];
                    }
                    Console.WriteLine("A = ");
                    //I popytka schitat' ishodnuyu matricu.
                    try
                    {
                        for (Int32 i = 0; i < N; ++i)
                        {
                            A[i] = StringToDoubleArray(Console.ReadLine(), N);
                        }
                    }
                    catch (Exception exc)
                    {
                        Console.WriteLine("\nERROR!!! Neverno zapisana matrica!!!");
                        Console.Read();
                        return;
                    }
                    //Schityvanie vektora b.
                    Double[] b = new Double[N];
                    Console.WriteLine("\nb = ");
                    try
                    {
                        for (Int32 i = 0; i < N; ++i)
                        {
                            b[i] = Double.Parse(Console.ReadLine());
                        }
                    }
                    catch (Exception exc)
                    {
                        Console.WriteLine("ERROR!!! Nevernyi format vektora b!!!");
                        Console.Read();
                        return;
                    }
                    //Matrica B i vektor e. Formirovanie.
                    Double [][] B;
                    Double [] e;
                    GetBe(A, b, N, out B, out e);
                    //Proverka na vyvod B.
                    if (args[0].Contains("B"))
                    {
                     Console.WriteLine("\nB:");
                     for (Int32 i = 0; i < N; ++i)
                     {
                         for (Int32 j = 0; j < N; ++j)
                         {
                             Console.Write("{0} ", B[i][j]);
                         }
                         Console.WriteLine();
                     }
                    }
                    //Proverka na vyvod e.
                    if (args[0].Contains("e"))
                    {
                     Console.WriteLine("\ne:");
                     for (Int32 i = 0; i < N; ++i)
                     {
                         Console.WriteLine("{0}", e[i]);
                     }
                    }
                    Double [] Xn;
                    Double [] XnPlusOne;
                    Double SwapX;
                    Int32 IterationNumber = 0;
                    //Sozdanie vektorov iksov.
                    Xn = new Double [N];
                    XnPlusOne = new Double [N];
                    //Zapolnenie Xn.
                    for (Int32 i = 0; i < N; ++i)
                    {
                     Xn[i] = e[i];
                    }
                    //Reshenie.
                    do 
                    {
                     for (Int32 i = 0; i < N; ++i)
                     {
                         XnPlusOne[i] = 0;
                         for (Int32 j = 0; j < N; ++j)
                         {
                             XnPlusOne[i] += (B[i][j] * Xn[j]);
                         }
                         XnPlusOne[i] += e[i];
                     }
                     for (Int32 i = 0; i < N; ++i)
                     {
                         SwapX = Xn[i];
                         Xn[i] = XnPlusOne[i];
                         XnPlusOne[i] = SwapX;
                     }
                     ++IterationNumber;
                    } while (Norma(Xn, XnPlusOne, N) > Epsilon);
                    //Proverka na vyvod x;
                    if (args[0].Contains("x"))
                    {
                     Console.WriteLine("\nx:");
                     for (Int32 i = 0; i < N; ++i)
                     {
                         Console.WriteLine("{0}", Xn[i]);
                     }
                    }
                    //Proverka na vyvod kol-va iteracii.
                    if (args[0].Contains("i"))
                    {
                     Console.WriteLine("\nKol-vo iteracii = {0}", IterationNumber);
                    }
                    Console.Read();
                }
            }
        }
    }
}



--------------------
user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0465 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.