Как правильно передать параметры по значению?

215
08 сентября 2021, 14:40

Нужно выявить сумму всех авто (price), ответ всегда выводится 50.

Как правильно передать параметры по значению?

int sum = 0;
        for (int j = 0; j < k; j++)
        {
            smallcar[j].all_price(ref j,ref sum);
        }
        sum.ToString();
        Console.Write(sum);
 public void all_price(ref int i,ref int summ)
    {
       summ = 0;
       summ = summ + Convert.ToInt32(price[i]);
    }
Console.Write("Введите количество легковых авто: ");
    int k = Convert.ToInt32(Console.ReadLine());
    Passengercar[] smallcar = new Passengercar[k];
    int i = 0;
    while (i < k)
    {
        smallcar[i] = new Passengercar();
        Console.WriteLine("\nВведите характеристики " + i + "-го легкового авто");
        Console.Write("  марка: ");
        smallcar[i].marka = Console.ReadLine();
        Console.Write("  модель: ");
        smallcar[i].model = Console.ReadLine();
        Console.Write("  страна-изготовитель: ");
        smallcar[i].countryrelease = Console.ReadLine();
        Console.Write("  цвет: ");
        smallcar[i].color = Console.ReadLine();
        Console.Write("  цена: ");
        smallcar[i].price = Console.ReadLine();
        Console.Write("  радиус колёс: ");
        smallcar[i].rwheels = Console.ReadLine();
        i++;
    }
class Auto
{
    public string marka;
    public string model;
    public string countryrelease;
    public string color;
    public string price;
}
class Passengercar : Auto
{
    public string rwheels;
    public void show_pass_car(int k)
    {
        Console.WriteLine("Авто " + k.ToString() + ": " + marka + "  " + model + "  " +
                                               countryrelease + "  " + color + "  " + price + "  " + rwheels);
    }
Answer 1

Вы же сами в функции обнуляете переменную summ. В итоге, вам выводит не суму всех элементов, а только последний элемент. Просто уберите summ = 0 в начале функции, и всё.

int sum = 0;
for (int j = 0; j < k; j++)
{
    smallcar[j].all_price(ref j,ref sum);
}
sum.ToString();
Console.Write(sum);
public void all_price(ref int i,ref int summ)
{
    summ = summ + Convert.ToInt32(price);    
}
READ ALSO
Как узнать расширение файла FileStream?

Как узнать расширение файла FileStream?

Имеется функция, которой на вход поступает объект класса FileStreamНеобходимо узнать его расширение (png,txt,bmp или другое)

159
Математическое представление x++ + ++x

Математическое представление x++ + ++x

Как представление в программе x++ + ++x, разложить с точки зрения математики?

104
Чтение SQL таблицы через Pandas

Чтение SQL таблицы через Pandas

Есть SQL таблица, которая читается через Pandas

97
Many-to-One в TypeOrm

Many-to-One в TypeOrm

Всем доброго времени сутокНа проекте используется TypeOrm

211