RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题

全部问题

Martin Hope
IAm DE4THH
Asked: 2024-09-26 03:04:09 +0000 UTC

索引超出数组范围 (C#)

  • 4

请帮帮我,问题是这样的:

在由整数元素组成的一维数组中n,计算:

  • 偶数数组元素的乘积;
  • 位于第一个和最后一个零元素之间的数组元素的总和。

在屏幕上显示数组。

我附上代码:

using System;
using System.Linq;

namespace lab3
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int[] massiv;
            int firstnullelem = 0;
            int secondnullelem = 0;
            int proizv = 1;
            int summaelemnull = 0;
            Console.WriteLine("Введите размер массива");
            string i = Console.ReadLine();
            int razmermassiva = int.Parse(i);
            massiv = new int[razmermassiva];
            Console.WriteLine("Вам необходимо ввести " + razmermassiva + " эл-ов массива...");
            for (int i2 = 0; i2 < razmermassiva; i2++)
            {
                Console.Write("Введите " + i2 + "-й эл-т массива >>> ");
                string e = Console.ReadLine();
                int e1 = int.Parse(e);
                massiv.Append(e1);
            }
            for (int nachmas = 0; nachmas < massiv.Length; nachmas++)
            {
                int nomerelem = nachmas;
                int chetnechet = nomerelem % 2;
                if (chetnechet == 0)
                {
                    proizv *= massiv[nachmas];
                }
                else
                {
                    continue;
                }
            }
            for (int perebor = 0; perebor <= massiv.Length; perebor++)
            {
                if (massiv[perebor] == 0)
                {
                    firstnullelem = perebor;
                    break;
                }
                else
                {
                    continue;
                }
            }
            for (int obratperebor = massiv.Length; obratperebor >= 0; obratperebor--)
            {
                if (massiv[obratperebor] == 0)
                {
                    secondnullelem = obratperebor;
                    break;

                }
                else
                {
                    continue;
                }
            }
            int konecsummi = secondnullelem;
            for (int nachalosummi = firstnullelem; nachalosummi < konecsummi; nachalosummi++)
            {
                summaelemnull += massiv[nachalosummi];
            }
            Console.WriteLine("Произведение всех четных эл-ов массива: ", proizv);
            Console.WriteLine("Сумма эл-ов массива от первого до последнего нулевого эл-та ", summaelemnull);
            Console.WriteLine("Весь массив: ");
            for (int tupo = 0; tupo <= massiv.Length; tupo++)
            {
                Console.WriteLine(tupo + "-й эл-т массива: ", massiv[tupo]);

            }
        }
    }
}

无论您输入什么元素,无论数组的大小如何,都会出现“索引超出数组范围”的异常。

我尝试改变循环条件,但没有帮助。

c#
  • 1 个回答
  • 85 Views
Martin Hope
AslanPAPA
Asked: 2024-09-26 01:27:52 +0000 UTC

在 C# 中将船只放置在战场上(控制台海战)

  • 6

我想写一个控制台海战,现在我只显示玩家字段。

using System;


class Program
{
    static int fieldSize = 10;
    static char[,] PlayerField = new char[fieldSize, fieldSize];
    static char[,] OpponentField = new char[fieldSize, fieldSize];
    static Random rnd = new Random();

    static void Main(string[] args)
    {
        InitializateField(PlayerField);
        InitializateField(OpponentField);

        PrintField(PlayerField, "Поле игрока:");
            

    }

    static void InitializateField(char [,] field)
    {
        for (int i = 0; i < fieldSize; ++i)
        {
            for (int j = 0; j < fieldSize; ++j)
            {
                field[i,j] = '~';
            }
        }
    }


    static void PrintField(char[,] field, string nameOfField)
    {
        Console.WriteLine(nameOfField);
        Console.Write("  ");
        for (int i = 0; i < fieldSize; ++i)
            Console.Write($"{i + 1} ");
        Console.WriteLine();  

        for (int i = 0; i < fieldSize; ++i)
        {
            Console.Write($"{(char)('A' + i)} ");
            for (int j = 0; j < fieldSize; ++j)
            {
                Console.Write($"{field[i,j]} ");
            }
            Console.WriteLine();
        }  
    }

}

我真的不明白如何在场上安排船只,我所能做的就是自己随机安排船只 10 次,然后在 (0, 9) 范围内调用随机,对于每个值都会有case它的值自己手动放置。那么如何理解在战场上放置船只的算法呢?

以下是放置船只的方法:

 static void PlaceShips(char[,] field)
        {
            PlaceShip(field, 4); 
            for (int i = 0; i < 2; i++) PlaceShip(field, 3); 
            for (int i = 0; i < 3; i++) PlaceShip(field, 2); 
            for (int i = 0; i < 4; i++) PlaceShip(field, 1); 
        }

    
        static void PlaceShip(char[,] field, int size)
        {
            bool placed = false;
            while (!placed)
            {
                // Выбираем случайное направление: 0 - горизонтально, 1 - вертикально
                int direction = rnd.Next(2);
                // Случайные координаты для начальной точки корабля
                int row = rnd.Next(fieldSize);
                int col = rnd.Next(fieldSize);

                if (CanPlaceShip(field, row, col, size, direction))
                {
                    // Размещаем корабль
                    for (int i = 0; i < size; i++)
                    {
                        if (direction == 0)
                            field[row, col + i] = 'S'; // горизонтально
                        else
                            field[row + i, col] = 'S'; // вертикально
                    }
                    placed = true;
                }
            }
        }

    // Проверка, можно ли разместить корабль
        static bool CanPlaceShip(char[,] field, int row, int col, int size, int direction)
        {
            // Проверяем, не выходит ли корабль за границы
            if (direction == 0 && col + size > fieldSize) return false; // горизонтально
            if (direction == 1 && row + size > fieldSize) return false; // вертикально

            // Проверяем, что на пути корабля нет других кораблей
            for (int i = 0; i < size; i++)
            {
                int r = row + (direction == 1 ? i : 0);
                int c = col + (direction == 0 ? i : 0);

                if (field[r, c] == 'S' || !IsSurroundingAreaClear(field, r, c))
                {
                    return false; // Есть пересечения
                }
            }

            return true;
        }

    // Проверка, что вокруг клетки корабля нет других кораблей
        static bool IsSurroundingAreaClear(char[,] field, int row, int col)
        {
            for (int i = row - 1; i <= row + 1; i++)
            {
                for (int j = col - 1; j <= col + 1; j++)
                {
                    if (i >= 0 && i < fieldSize && j >= 0 && j < fieldSize)
                    {
                        if (field[i, j] == 'S')
                            return false;
                    }
                }
            }
            return true;
        }

但我认为解析起来会非常困难,我该如何解析这些方法以便了解它是如何生成船舶的?

c#
  • 1 个回答
  • 82 Views
Martin Hope
aptyp
Asked: 2024-09-26 01:13:50 +0000 UTC

本·福特的书中有错误吗?

  • 7

2019 年版的第 114 页写道,这样的<[Hh]([1-6])>.*?<\/[Hh][1-6]\1>反向链接表达式\1将找到 HTML 标题行。这是一个错误吗?在此输入图像描述

регулярные-выражения
  • 1 个回答
  • 28 Views
Martin Hope
Daniyar Saimagombetov
Asked: 2024-09-25 21:26:43 +0000 UTC

删除 Telegram 机器人中的消息

  • 5

大家好!!!我无法删除用户在 Telegram 机器人中发送的消息。 Python 3 AI图3

例如:当使用/start命令时,它会在响应消息中重复该命令。怎么能不表现出来呢?

在此输入图像描述

python
  • 1 个回答
  • 26 Views
Martin Hope
Tamo Tamm
Asked: 2024-09-25 19:12:50 +0000 UTC

动画重启

  • 5

这段代码如何实现更新效果?猫可以工作,但是当您按刷新时没有任何效果,并且不清楚是否有任何变化

<a href="javascript://" id="recurl">refresh</a>

<div id="recomb">$COM_BODY$</div>

<script type="text/javascript">
  $('#recurl').click(function() {
    random = Math.floor(Math.random() * 9999);
    $.get('$REQUEST_URI$?' + random, function(data) {
      $('#recomb').html($('#recomb', data).html());
    });
  });
</script>
javascript
  • 1 个回答
  • 59 Views
上一页
下一页

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5