Доступ к переменной, объявленной в теле цикла - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, есть следующий код
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace lab_5_18
{
   public class check
    {
       public int chek_values()
        {
            bool access;
            int n;
            while (true)
            {
                string s = Console.ReadLine();
                access = int.TryParse(s, out n);
                if (!access || n <= 0)
                {
                    Console.WriteLine("Ошибка ввода");
                    Console.Write("n = ");
                }
                else
                {
                    break;
                }
            }
            return n;
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace lab_5_18
{
   public class checkdouble
    {
        public double check_doublearg (int i)
        {
            bool access;
            double n ;
            while (true)
            {
                string s = Console.ReadLine();
                access = double.TryParse(s, out n);
                if (!access || n <= 0)
                {
                    Console.WriteLine("Ошибка ввода");
                    Console.Write("a"+ i+1 + " = ");
                }
                else
                {
                    break;
                }
            }
            return n;
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace lab_5_18
{
    class Program
    {
        static void Main(string[] args)
        {
            check arg = new check();
            checkdouble a = new checkdouble();
            double[] mas = new double[1];
            int i,n,last,ch = 0,maxi,summ = 0;
            double c, max = double.MinValue,d;

            Console.WriteLine("Введите число элементов массива");
            Console.Write("n = ");
            n = arg.chek_values();
            Array.Resize<double>(ref mas, n);
            Console.WriteLine("Введите число \"C\" ");
            Console.Write("C = ");
            c = a.check_doublearg(0);
            Console.WriteLine("Введите элементы массива через \"Enter\"");
            
            for ( i = 0; i < n; i++)
            {
                Console.Write("a [" + (i + 1) + "] = ");
                mas[i] = a.check_doublearg(i);
                if (mas[i] < 0)
                {
                    last = i;
                }
                else last = -1;
                if (mas[i] < c)
                {
                    ch += 1;
                }
                if (mas [i] > max)
                {
                    max = mas[i];
                    maxi = i;
                }
                Console.WriteLine();
            }
            if (last == -1)
            {
 
            }
                Console.ReadKey();
        }
    }
}
проблема в том, что не смотря на то что все переменные объявлены вне цикла, переменная last остается пустой, то есть ее значение за цикл for не передается, что делать? Подскажите пожалуйста!

Решение задачи: «Доступ к переменной, объявленной в теле цикла»

textual
Листинг программы
int i,n,last,ch = 0,maxi,summ = 0;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5
Похожие ответы