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

Подскажите в чем ошибка

25.03.2019, 12:30. Показов 1131. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем задание следующее:
В массиве A=(a1, а2, ..., аn) все отрицательные элементы отправить в «хвост» массива.
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
using System;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            
            Console.WriteLine("Введите размер массива");
            int n = Convert.ToInt32(Console.ReadLine());
            int[] a = new int[n];
            Random r = new Random();
 
 
            for (int i = 0; i < a.Length; i++)
            {
 
                a[i] = r.Next(-10, 10);
                if (a[i] < 0)
                {a[i] = a[n-1];}
                
                 Console.Write(a[i] + " "); 
 
 
            }
 
 
 
            Console.ReadKey();
        }
 
    }
 
}
Отправляет в хвост массива только 1 элемент,а остальные просто обнуляет,подскажите в чем ошибка.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.03.2019, 12:30
Ответы с готовыми решениями:

подскажите в чем моя ошибка
Не могу понять в чем причина. Не хочет компилироваться. using System; using System.Collections.Generic; using System.Linq; ...

Подскажите в чем ошибка (интерфейс)
using System; public interface ISeries { int GetNext(); int Reset(); void SetStart(int x); } class ByTwos :...

Работа с массивами. Подскажите в чем ошибка.
Доброго времени суток всем. Помогите найти оптимальный путь решения проблемы. Дано: Есть массив конечной длинны ARRAY, с...

6
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
25.03.2019, 12:40
Потому что здесь
C#
1
 a [ i ] = a [ n - 1 ];<---//всегда будет одно и тоже число
Т.е
Например ввели размер массива n = 30
при каждой итерации получаем n - 1 = 29;
0
1 / 1 / 0
Регистрация: 30.12.2016
Сообщений: 53
25.03.2019, 12:59  [ТС]
Ну ты попробуй запусти в visual studio и посмотри что происходит
0
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
25.03.2019, 13:16
Цитата Сообщение от Программист-228 Посмотреть сообщение
Ну ты попробуй запусти в visual studio и посмотри что происходит
А что должно произойти? Я по моему тебе уже сказал в чем у тебя проблема.
Давай логически. Задаем размер массива n = 30.
При каждой итерации ты проверяешь условие массива на то что а < 0, если истина то ты от n вычитаешь 1.
А n у тебя глобальная переменная. И она всегда будет иметь n = 30 - 1 = 29. Так понятно?
А 29 в массиве имеет значение = 0 всегда.
1
1 / 1 / 0
Регистрация: 30.12.2016
Сообщений: 53
25.03.2019, 13:18  [ТС]
А как можно сделать так чтобы в цикле ,если он подходит под условие сдвигать его в конец массива?
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
25.03.2019, 13:19
Лучший ответ Сообщение было отмечено Программист-228 как решение

Решение

Сначала нужно отделить мух от котлет. Заполнить массив, а потом курочить его отдельно.
И алгоритм надо отладить ДО ввода из консоли. Первая ошибка студента.
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
using System;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
 
            //Console.WriteLine("Введите размер массива");
            int n = 5;// Convert.ToInt32(Console.ReadLine());
            int[] a = new int[n];
            Random r = new Random();
 
            for (int i = 0; i < a.Length; i++)
                a[i] = r.Next(-10, 10);
 
            // Исходный массив
            Console.WriteLine(string.Join(" ", a));
            int i2 = a.Length;
            for (int i = i2 - 1; i >= 0; --i)
            {
                if (a[i] < 0)
                    --i2;
                else
                    break;
            }
            for (int i = i2 - 1; i >= 0; --i)
            {
                var item = a[i];
                if (item < 0)
                {
                    for (int j = i + 1; j < i2; j++)
                    {
                        a[j - 1] = a[j];
                    }
                    a[--i2] = item;
                }
 
            }
 
            // Обновленный массив
            Console.WriteLine(string.Join(" ", a));
 
            Console.ReadKey();
        }
    }
}
1
1 / 1 / 0
Регистрация: 30.12.2016
Сообщений: 53
25.03.2019, 13:22  [ТС]
Спасибо очень выручил!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.03.2019, 13:22
Помогаю со студенческими работами здесь

Подскажите в чем ошибка ? (basic graph)
namespace temperatura { public partial class Form1 : Form { private double d; private void...

Реализация дэка. Подскажите,в чем моя ошибка?
Задание такое: Дек организован в массиве с циклическим заполнением и с использованием двунаправленного списка. Операции выполняются с...

Подскажите, в чем дело
Есть две формы: на первой листбокс, на второй линклейбл. Нужно передать в линклейбл информацию о выбранном элементе в листбокс. Почему-то...

Подскажите в чем проблема?
static void Main(string args) { int X; int Y; Console.Write(&quot;Введите X:&quot;); ...

SerialPort. Подскажите в чем проблема?
private void buttonSEND_Click(object sender, EventArgs e) { serialport1.open(); serialPort1.Write(new...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
[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