Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разбивка/Распределение суммы по элементам массива 
:(
    Опции темы
Олег13
Дата 16.10.2015, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем добрый день!
В общем вопрос такой: необходимо вводимую сумму разбить по элементам массива. Например: есть массив из 6 элементов типа int, каждый массив должен содержать сумму не более 2000, т. е. например вводим сумму 7000 и она разбивается так: 1-й элемент=2000, 2-й элемент=2000, 3-й элемент=2000, 4-й элемент=1000. Я состряпал вариант решения данного вопроса (см. ниже), но по моему как-то коряво получилось, может у кого-нибудь есть более элегантный способ решения?

Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication5
{
    public partial class Form1 : Form
    {
        int[] myArr = new int[6];

        public Form1()
        {
            InitializeComponent();
          
        }

        private void button1_Click(object sender, EventArgs e)
        {           

            int s = 2000;
            for (int i = 0; i <= myArr.Length-1; i++)
            {
                if (myArr[i] == 0)
                {
                    double res = Convert.ToInt16(textBox1.Text) / s;

                    for (int r = i; r <= res-1; r++)
                    {
                        myArr[r] = s;
                    }
                }
            }

            for (int i1 = 0; i1 <= myArr.Length - 1; i1++)
            {
                if (myArr[i1] == 0)
                {
                    double res1 = Convert.ToInt16(textBox1.Text) % s;
                                     
                    myArr[i1] = Convert.ToInt16(res1);
                    break;                    
                }
            }
            
            //Вывод результатов            
            for (int a = 0; a <= myArr.Length-1; a++)
            {
                listBox1.Items.Add(myArr[a]);
            }              
            
        }        
    }
}
  
PM MAIL   Вверх
Олег13
  Дата 19.10.2015, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Похоже мыслей ни у кого нет
PM MAIL   Вверх
Angel666
Дата 20.10.2015, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Мне кажется что так по компактней будет:
using System;

namespace DistributionArray
{
    class Program
    {    
        public static void Main(string[] args)
        {            
            int[] myArr = new int[6];
            int s = 2000;
            int summ = 0;
            
            Console.Write("Введите сумму!");
            summ = Convert.ToInt16(Console.ReadLine());
            
            int whole = summ / s;
            for (int i = 0; i < whole; i++)
            {
                myArr[i] = s;
            }
            
            myArr[whole] = summ % s;
                     
            for (int a = 0; a < myArr.Length; a++)
            {
             Console.Write("{0:D}\r\n", myArr[a].ToString());
            }
            
            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }
    }
}

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
Олег13
  Дата 21.10.2015, 03:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо, тоже неплохой вариант.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




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


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

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