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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2013, 19:22   #1
Sergey_gorobets
Пользователь
 
Регистрация: 08.02.2013
Сообщений: 69
По умолчанию Грамотно ли написан код?

Задача следующая..
Есть Классы (разрядность) бетона по прочности (В12,5, В15, В20 и т.д.)
Каждому классу соответствует свое расчетное сопротивлени ( 7,7, 10,5....)
Нужно написать код, который будет выдавать сопротивление по заданному пользователем классу.

так вот, грамотно ли написан нижеуказанный код?Прошу проверить как работоспособность, так и грамотность (уважающий себя программист написал бы именно так или как то иначе?).



Код:
using System;


    class stringarrays
    {
        
        public static void Main()
        {
            
            string[] klassbetona = { "B15", "B20", "B25", "B30" };

            double[] prochnostbetona = { 7.7, 10.5, 13.0, 15.5 };
            Console.Write(" Введите класс бетона и нажмите ентер: ");
            string name = Console.ReadLine();
            for (int i = 0; i < klassbetona.Length; i++)
            {
                if (name == klassbetona[i])
                {
                    Console.WriteLine();

                    for (int j = 0; j < prochnostbetona.Length; j++)
                    {
                        if (j == i)
                            Console.Write("Прочность бетона класса " + name + " составляет " +
                                prochnostbetona[j]+" МПа");
                    }
                }
            }
            Console.ReadKey();
        }
    }

Последний раз редактировалось ACE Valery; 08.02.2013 в 20:20.
Sergey_gorobets вне форума Ответить с цитированием
Старый 08.02.2013, 19:32   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,618
По умолчанию

Цитата:
string[] klassbetona = { "B15", "B20", "B25", "B30" };

double[] prochnostbetona = { 7.7, 10.5, 13.0, 15.5 };
эти данные связаны, я бы засунул их в структуру или пару, а лучше в мап

да и вцелом, говнокод, этот фрагмент понравился особенно:
Код:
for (int j = 0; j < prochnostbetona.Length; j++)
{
if (j == i)

Последний раз редактировалось rrrFer; 08.02.2013 в 19:39.
rrrFer вне форума Ответить с цитированием
Старый 08.02.2013, 22:11   #3
Sergey_gorobets
Пользователь
 
Регистрация: 08.02.2013
Сообщений: 69
По умолчанию

....я бы засунул их в структуру или пару, а лучше в мап.......
Можно подробнее о паре и мап??
Sergey_gorobets вне форума Ответить с цитированием
Старый 08.02.2013, 23:00   #4
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Цитата:
Есть Классы (разрядность) бетона по прочности (В12,5, В15, В20 и т.д.)
А сколько этих и т.д.?
Я бы использовал структуру.
По любому, если известен порядковый номер элемента в одном типе данных, во втором перебирать индексы ...
Код:
for (int i = 0; i < klassbetona.Length; i++)
            {
                if (name == klassbetona[i])
                {
                    Console.WriteLine();

                    for (int j = 0; j < prochnostbetona.Length; j++)
                    {
                        if (j == i)
                            Console.Write("Прочность бетона класса " + name + " составляет " +
                                prochnostbetona[j]+" МПа");
                    }
                }
            }
Можно ведь просто: prochnostbetona[i]


Вроде так ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 08.02.2013, 23:07   #5
Sergey_gorobets
Пользователь
 
Регистрация: 08.02.2013
Сообщений: 69
По умолчанию

да я только 2 недели в С# - со структурами еще не познакомился..
в любом случае спасибо..
Sergey_gorobets вне форума Ответить с цитированием
Старый 08.02.2013, 23:14   #6
Sergey_gorobets
Пользователь
 
Регистрация: 08.02.2013
Сообщений: 69
По умолчанию

Спасибо большое..код короче и без лишнего цыкла..
Sergey_gorobets вне форума Ответить с цитированием
Старый 09.02.2013, 11:24   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Я бы делал так:
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class beton { public string klass; public Double prochnost;}
    class Program
    {
        static beton[] b= new beton[4] {
            new beton{klass="B15",prochnost=7.7},
            new beton{klass="B20",prochnost=10.5},
            new beton{klass="B25",prochnost=13.0},
            new beton{klass="B30",prochnost=15.5},
        };
        static void Main(string[] args)
        {
            Console.Write(" Введите класс бетона и нажмите ентер: ");
            string name = Console.ReadLine();
            var q = b.Where(bb => bb.klass == name);
            if (q.Count() > 0)
                foreach(beton bet in q) Console.Write("Прочность бетона класса {0}  составляет {1}  МПа",bet.klass,bet.prochnost);
            else Console.Write("Такого нет");
            Console.ReadKey();
        }
    }
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.02.2013, 11:24   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Я бы делал так:
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class beton { public string klass; public Double prochnost;}
    class Program
    {
        static beton[] b= new beton[4] {
            new beton{klass="B15",prochnost=7.7},
            new beton{klass="B20",prochnost=10.5},
            new beton{klass="B25",prochnost=13.0},
            new beton{klass="B30",prochnost=15.5},
        };
        static void Main(string[] args)
        {
            Console.Write(" Введите класс бетона и нажмите ентер: ");
            string name = Console.ReadLine();
            var q = b.Where(bb => bb.klass == name);
            if (q.Count() > 0)
                foreach(beton bet in q) Console.Write("Прочность бетона класса {0}  составляет {1}  МПа",bet.klass,bet.prochnost);
            else Console.Write("Такого нет");
            Console.ReadKey();
        }
    }
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.02.2013, 13:17   #9
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

По формальным признакам:
в грамотно написанном коде должно быть описание, для чего нужен класс и как его предполагается использовать, а также подробное описание всех видимых снаружи полей и методов.
Очевидно, приведенный код этим не обладает.
s-andriano вне форума Ответить с цитированием
Старый 09.02.2013, 13:39   #10
Sergey_gorobets
Пользователь
 
Регистрация: 08.02.2013
Сообщений: 69
По умолчанию

Спасибо большое..
Sergey_gorobets вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как грамотно читать чужой код? tiger() Общие вопросы по программированию, компьютерный форум 2 28.12.2012 15:17
Как грамотно сократить формулу JKA Microsoft Office Excel 3 06.04.2012 16:19
На сколько грамотно использование TStringList? Дворник Общие вопросы Delphi 5 23.12.2010 13:18
как грамотно объяснить код (делфи 7) MegaMozg28 Помощь студентам 0 10.06.2010 14:23
На каком языке написан код? FleshDro Помощь студентам 6 11.11.2009 06:46