Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 13

Где ошибка в коде генерации массива?

13.01.2014, 15:22. Показов 1008. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Программа должна из рандомных чисел делать массив, создавать новый массив с противоположными по знаку числами и выводить начальный и конечный массивы на экран.
Выводит только первый элемент, а все остальные нули.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace hello_world
{
    class Program
    {
        public static int[] MeshElements (int[] array, int count)
        {
            int[] arrayB = new int[count];
            
                foreach (int i in arrayB)
                {
                    arrayB[i] = -array[i];
                }
            return arrayB;
        }
        public static int[] ShowArray(int[] array, int count)
        {
            int[] arrayC = new int[count];
            for (int i = 0; i < count; i++)
            {
                arrayC[i] = array[i];
            }
            for (int i = 0; i < count; i++)
            {
                Console.Write(arrayC[i]+" ");
            }
                return arrayC;
 
        }
        static void Main(string[] args)
        {
            int count;
            Console.WriteLine("input count");
            count=Convert.ToInt32(Console.ReadLine());
            Console.WriteLine(count);
 
            int[] arrayA = new int[count];
            Random numbers = new Random();
            foreach (int i in arrayA)
            {
                arrayA[i] = numbers.Next(1, count);
            }
            
            Console.WriteLine("input" + ShowArray(arrayA, count));
            Console.WriteLine("output"+ShowArray(MeshElements(arrayA, count), count));
            Console.ReadKey();
        
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.01.2014, 15:22
Ответы с готовыми решениями:

Где ошибка в коде?. Перепись положительных элементов массива в другой массив
Помогите разобраться что делаю не так. Искал на форуме подобные темы, но толком ничего не нашел, темы схожие но не оно. Само задание: Нужно...

ошибка при генерации массива
var Form1: TForm1; i, j: integer; const n=5; m=5; type mas=array of integer; var MassA,MassB:mas;

Ошибка в генерации двумерного массива
Добрый день, пытаюсь сгенерировать двумерный массив и заполнить его случайными числами, но меня, почему-то, бракует на строке for (var...

14
26 / 26 / 10
Регистрация: 22.12.2013
Сообщений: 153
13.01.2014, 15:32
Цитата Сообщение от VanDS Посмотреть сообщение
foreach (int i in arrayA) { arrayA[i] = numbers.Next(1, count); }
этим что хотелось выполнить?
Цитата Сообщение от VanDS Посмотреть сообщение
int[] arrayB = new int[count]; foreach (int i in arrayB) { arrayB[i] = -array[i]; } return arrayB;
этим тоже
0
 Аватар для Temirlan90
137 / 137 / 25
Регистрация: 30.09.2010
Сообщений: 333
13.01.2014, 15:32
Цитата Сообщение от VanDS Посмотреть сообщение
C#
1
2
3
4
foreach (int i in arrayA)
    {
    arrayA[i] = numbers.Next(1, count);
    }
Заменил
C#
1
2
3
4
for (int index = 0; index < arrayA.Length; index++)
            {
                arrayA[index] = numbers.Next(1, count);
            }
Цитата Сообщение от VanDS Посмотреть сообщение
C#
1
2
3
4
foreach (int i in arrayB)
    {
    arrayB[i] = -array[i];
    }
заменил
C#
1
2
3
4
for (int index = 0; index < arrayB.Length; index++)
            {
                arrayB[index] = -array[index];
            }
Весь код тут
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
using System;
 
namespace CyberForumTasks
{
    class Program
    {
        public static int[] MeshElements(int[] array, int count)
        {
            var arrayB = new int[count];
 
            for (var index = 0; index < arrayB.Length; index++)
            {
                arrayB[index] = -array[index];
            }
            return arrayB;
        }
 
        public static int[] ShowArray(int[] array, int count)
        {
            var arrayC = new int[count];
            for (int i = 0; i < count; i++)
            {
                arrayC[i] = array[i];
            }
            for (int i = 0; i < count; i++)
            {
                Console.Write(arrayC[i] + " ");
            }
            return arrayC;
 
        }
 
        static void Main()
        {
            Console.WriteLine("input count");
            int count = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine(count);
 
            var arrayA = new int[count];
            var numbers = new Random();
            for (var index = 0; index < arrayA.Length; index++)
            {
                arrayA[index] = numbers.Next(1, 100);
            }
 
            Console.WriteLine("input" + ShowArray(arrayA, count));
            Console.WriteLine("output" + ShowArray(MeshElements(arrayA, count), count));
            Console.ReadKey();
 
        }
    }
}
1
154 / 153 / 29
Регистрация: 21.05.2010
Сообщений: 338
13.01.2014, 15:34
Цитата Сообщение от VanDS Посмотреть сообщение
C#
1
2
3
4
foreach (int i in arrayA)
     {
     arrayA[i] = numbers.Next(1, count);
     }
WTF?! У вас же переменная i всегда будет равна нулю, ибо в массиве все элементы изначально {0, 0, 0, ..., 0}, а вы перебираете его элементы.
C#
1
2
3
4
for (int i = 0; i < arrayA.Count(); i++)
            {
                arrayA[i] = numbers.Next(1, count);
            }
И также исправьте в методе MeshElements
1
1 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 13
13.01.2014, 15:54  [ТС]
первое забивает массив arrayA рандомными числами

второе забивает в массив arrayB числа обратные массиву arrayA (ну или любого другому, который будет аргументом этой функции)

Добавлено через 18 минут
Спасибо. уже лучше.
еще вопрос по выводу на экран. почему 2 раза выдает начальный массив и в конце пишет текст.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace hello_world
{
    class Program
    {
        public static int[] MeshElements (int[] array, int count)
        {
            int[] arrayB = new int[count];
 
            for (int i = 0; i < count;i++ )
            {
                arrayB[i] = -array[i];
            }
            return arrayB;
        }
        public static int[] ShowArray(int[] array, int count)
        {
            int[] arrayC = new int[count];
            for (int i = 0; i < count; i++)
            {
                arrayC[i] = array[i];
            }
            for (int i = 0; i < count; i++)
            {
                Console.Write(arrayC[i]+" ");
            }
                return arrayC;
 
        }
        static void Main(string[] args)
        {
            int count;
            Console.WriteLine("input count");
            count=Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Number of elements="+count);
 
            int[] arrayA = new int[count];
            Random numbers = new Random();
            for (int i = 0; i < count;i++ )
            {
                arrayA[i] = numbers.Next(1, count);
                Console.Write(arrayA[i]);
            }
            
            Console.WriteLine("input " + ShowArray(arrayA, count));
            Console.WriteLine("output "+ShowArray(MeshElements(arrayA, count), count));
            Console.ReadKey();
        
        }
    }
}
1
4 / 4 / 1
Регистрация: 26.04.2013
Сообщений: 14
13.01.2014, 16:02
> почему 2 раза выдает начальный массив и в конце пишет текст.

Тут лишний вывод, закомментирован.
C#
1
2
3
4
5
6
7
            int[] arrayA = new int[count];
            Random numbers = new Random();
            for (int i = 0; i < count; i++)
            {
                arrayA[i] = numbers.Next(1, count);
                //Console.Write(arrayA[i]);
            }
0
Заблокирован
13.01.2014, 16:04
Цитата Сообщение от VanDS Посмотреть сообщение
почему 2 раза выдает начальный массив и в конце пишет текст.
Потому-что вы его выводите 2 раза:
здесь
C++
1
2
3
4
5
 for (int i = 0; i < count;i++ )
            {
                arrayA[i] = numbers.Next(1, count);
                Console.Write(arrayA[i]);
            }
и вот тут:
C#
1
2
3
4
for (int i = 0; i < count; i++)
            {
                Console.Write(arrayC[i]+" ");
            }
0
1 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 13
13.01.2014, 16:04  [ТС]
Спасибо. я уже сам увидел.
теперь все на своих местах.
0
 Аватар для pokerface
209 / 174 / 48
Регистрация: 20.09.2012
Сообщений: 481
13.01.2014, 16:50
Цитата Сообщение от VanDS Посмотреть сообщение
Программа должна из рандомных чисел делать массив, создавать новый массив с противоположными по знаку числами и выводить начальный и конечный массивы на экран.
Если правильно понял задание

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 int lenght = 0 ;
            lenght = int.Parse (Console.ReadLine());
            Random rnd = new Random();
            int[] mas1 = new int [lenght];
            for(int i=0 ; i<lenght;i++)
            {
                mas1[i] = rnd.Next();
                Console.WriteLine(mas1[i]);
            }
            int[] mas2 = new int[mas1.Length];
            for(int i =0 ; i<mas2.Length;i++)
            {
                if (mas1[i] != 0)
                {
                    mas2[i] = mas1[i] * -1;
                }
                else
                {
                    mas2[i] = mas1[i];
                }
                Console.WriteLine(mas2[i]);
            }
            Console.ReadLine();
0
 Аватар для Дмитрий3241
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
Записей в блоге: 6
14.01.2014, 00:28
VanDS, вы неправильно понимаете цикл foreach...
Цикл for это цикл со счетчиком (возможны и другие варианты использования), в цикле for может присутствовать переменная счетчик которая как то будет изменятся на каждом шаге цикла.
for ( int i = 0; i < 10; i++ )
Переменная i будет равняться [0; 10)

Так же в условие не обязательно должна участвовать переменная i.
for ( int i = 0; arr[i] != 0; i++ )
Цикл будет идти бесконечно, пока не встретит в массиве 0.

Можно убирать любые блоки, например:
for ( int i = 0;; i++)
Так же бесконечно крутящийся цикл.


Цикл foreach получает последовательно значения из коллекции.
Он не хранит в себе номер текущей итерации.
foreach( var i in mas )
i будет равна всем элементам коллекции mas поочередно.
1
1 / 1 / 0
Регистрация: 29.11.2012
Сообщений: 13
14.01.2014, 17:59  [ТС]
вот за такое объяснение отдельное спасибо
0
15 / 15 / 0
Регистрация: 09.02.2012
Сообщений: 30
16.01.2014, 17:48
Цитата Сообщение от -HPR- Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
11
12
for(int i =0 ; i<mas2.Length;i++)
{
if (mas1[i] != 0)
{
mas2[i] = mas1[i] * -1;
}
else
{
mas2[i] = mas1[i];
}
Console.WriteLine(mas2[i]);
}
Вы меня извините, но что это за стиль такой ужасный? Зачем if и * -1?

Добавлено через 5 минут
Есть такой вариант:
C#
1
2
3
4
5
6
int count = 10;
var r = new Random();
var arr1 = Enumerable.Repeat(0, count).Select(x => r.Next(-10, 10)).ToArray();
Console.WriteLine(string.Join(", ", arr1.Select(x => x.ToString())));
var arr2 = arr1.Select(x => -x).ToArray();
Console.WriteLine(string.Join(", ", arr2.Select(x => x.ToString())));
0
 Аватар для pokerface
209 / 174 / 48
Регистрация: 20.09.2012
Сообщений: 481
17.01.2014, 14:28
Цитата Сообщение от Серега_EX Посмотреть сообщение
Вы меня извините, но что это за стиль такой ужасный? Зачем if и * -1?
Добавлено через 5 минут
Есть такой вариант:
C#
1
2
3
4
5
6
int count = 10;
var r = new Random();
var arr1 = Enumerable.Repeat(0, count).Select(x => r.Next(-10, 10)).ToArray();
Console.WriteLine(string.Join(", ", arr1.Select(x => x.ToString())));
var arr2 = arr1.Select(x => -x).ToArray();
Console.WriteLine(string.Join(", ", arr2.Select(x => x.ToString())));
Если человек не знает как заполнить рандомом масив ( не хочу никого обидеть, все учимся), то всякие плюшки в виде Linq ему буде ещё сложнее понять... Писал код так, что б было понятно, что и куда=))
C#
1
var arr2 = arr1.Select(x => -x).ToArray();
это что? тот же цикл с IF и с заменой знака, просто всю грязную работу делает Linq.
Как по мне, так Linq плохо сказывается на понимании программирования молодыми программистами. Его можно использовать, когда уже знаешь сам принцип работы и при надобности сможешь обойтись без него.
1
15 / 15 / 0
Регистрация: 09.02.2012
Сообщений: 30
18.01.2014, 17:33
Да нет) я как бы не против, но зачем if, если хватает mas2[i] = -mas1[i]; Я это имел ввиду.
1
 Аватар для pokerface
209 / 174 / 48
Регистрация: 20.09.2012
Сообщений: 481
22.01.2014, 22:59
Цитата Сообщение от Серега_EX Посмотреть сообщение
Да нет) я как бы не против, но зачем if, если хватает mas2[i] = -mas1[i]; Я это имел ввиду.
ой, что то не подумал)) при умножении на 0 всегда будет 0, а потому нет смысла делать проверку) Спасибо что исправили))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.01.2014, 22:59
Помогаю со студенческими работами здесь

В коде где-то ошибка
Друзья! Сроки горят, а решения нет. В коде где-то ошибка, помогите её найти: library(quantmod) library(fractaldim) #...

Где ошибка в коде
В файле goinsert.txt: строка 1 строка 2 строка 3 строка 4 строка 5 и т.д. &lt;? include &quot;db.php&quot;; $fp =...

Где ошибка в коде?
Доброго времени суток! Я недавно начал учиться писать программы на С++, сайчас возникла такая проблема, по условиям задания надо так,...

Где ошибка в коде?
Вопрос скорее к коду. int main (void) { int a,b; set_tris_a(0b11111111); set_tris_b(0b11111111); while (1)...

Где ошибка в коде?
задача Для заданной функции y:=cos(t/2.3)+sin(t-2.4)-sqrt(t) вывести на экран значение функции, которые меньше -1 и соответствующие им...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru