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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2011, 13:56   #1
JinAnton
Пользователь
 
Регистрация: 04.01.2011
Сообщений: 54
Печаль Замена чисел с простым индексом в массиве C#

Дано натуральное число D (его вводит пользователь) и действительные числа A1,...,Am. В последовательности A1,...,Am заменить каждый i-й член, где i - простое число, остатком от деления Ai^2 на D.

Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Int32 n = Convert.ToInt32(textBox2.Text);//считываем натуральное число
            Int32[] A = new int[100];

            for (int i = 0; i < 100; i++)
            {
                A[i] = Convert.ToInt32(textBox1.Text.Split(','));
                for (int j = 2; j < i; j++)
                {
                    if (i % j == 0 || i == 1)
                    {
                        A[i] = (A[i] * A[i]) % n;
                    }

                }
                textBox3.Text += Convert.ToString(A[i]);
            }
        }

        private void EXITToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Вы уверены?", "Выход", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                Close();
        }

    }
}
где ошибка подскажите??? она запускаеться но при расчете говорит
При приведении числа его значение должно быть конечным и указывает на строчку
Код:
A[i] = Convert.ToInt32(textBox1.Text.Split(','));
JinAnton вне форума Ответить с цитированием
Старый 06.04.2011, 16:03   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) по существу, Вы хотели, видимо, выполнить такое:
Код:
                A[i] = Convert.ToInt32(textBox1.Text.Split(',').ToArray()[i] );
2) а что, у Вас в TextBox1 забито через запятую 100 чисел?!
если это так. то предлагаю Вам ГОРАЗДО более гибкий и удобный вариант
по заполнению массива A
Код:
            Int32[] A = textBox1.Text.Split(',').ToArray().Select(b => Convert.ToInt32(b)).ToArray() ;
ну, или, согласно условию (массив вещественных чисел):
Код:
  Double[] A = textBox1.Text.Split(',').ToArray().Select(b => Convert.ToDouble(b)).ToArray() ;

3) в условии сказано:
Цитата:
и действительные числа A1,...,Am
действительные - это вещественные числа, а не целые, как это сделано у Вас.

4) чисел должно быть M (а не 100. кстати, откуда взялась цифра 100? Вам просто нравятся сотни? )

5) Вы не учитываете, что в условии Вам даны числа с индексом от 1 до M
(в программе же индексы считаются от нуля, как это фактически в массиве имеет место быть!)

6) АБСОЛЮТНО не понял, как Вы проверяете индекс на простоту..
(особенно с учётом моего замечания в п. 5) )

7) ну и последнее....
если Вам в условии дано число D, почему Вы в программе его называете переменной n (нет, нет, это, безусловно не ошибка! Просто лишний повод запутать себя и других!! ) Вы просто не любите переменных с именем D ?!
Угадал?!

Последний раз редактировалось Serge_Bliznykov; 06.04.2011 в 16:08.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.04.2011, 12:36   #3
JinAnton
Пользователь
 
Регистрация: 04.01.2011
Сообщений: 54
По умолчанию

вы убили во мне начинающго программиста ХД если честно я вообще первый раз программирую на С# поэтому понимаю ваше недоумение и непонимание
JinAnton вне форума Ответить с цитированием
Старый 08.04.2011, 12:39   #4
JinAnton
Пользователь
 
Регистрация: 04.01.2011
Сообщений: 54
По умолчанию

вообще вот изначальный код но здесь проверяеться не индекс а само число а как переделат я не знаю сделал как смог (это прога сделана тоже мной поэтому прокоментил)
Код:
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication11
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Int64 n = Convert.ToInt64(textBox2.Text);//считываем натуральное число
            string[] A = textBox1.Text.Split(',');//считываем действительные числа в массив типа string
            foreach (string b in A) //проходим по всем элементам массива
            {
                bool prost = true;//если true, то число простое иначе не простое
                double a = Convert.ToDouble(b);//преобразуем элемент массива в тип double
                //проверяем элемент массива на простоту
                for (int i = 2; i <= a / 2; i++)
                {
                    if (a % i == 0)//проверяем остаток от деления
                    {
                        prost = false;
                        break;
                    }
                }
                if (prost)
                {
                    label3.Text += Convert.ToString(Math.Pow(a, 2) % n)+",";//если простое,то делаем преобразование элемента
                }
                else
                {
                    label3.Text += Convert.ToString(a)+",";//если не простое, то выводим элемент так, как он есть
                }
            }
 
        }
    }
JinAnton вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена в двум дин массиве igabenu Помощь студентам 2 28.03.2011 22:21
Замена одного слова на другое в массиве строк С++ Тома1993 Помощь студентам 0 17.03.2011 21:52
(Си) Замена слов наименьшей длины в массиве строк RZMTZM Общие вопросы C/C++ 7 25.01.2010 00:30
Замена данных в одномерном массиве Jaroslav Microsoft Office Excel 2 09.06.2009 08:25
замена столбцов в массиве DeFace Общие вопросы C/C++ 10 10.01.2009 23:16