Wątek przeniesiony 2014-03-06 21:01 z C# i .NET przez Ktos.

Zamiana zmiennej lokalnej na globalną - jak to zrobić?

0

witam mam pytanie jak w poniższym kodzie zrobić żeby tablica s = tab[i,k] była zmienną globalną nie lokalną ponieważ poza pętlą nie mogę wywołać tablicy s=tab[i,k].

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Podaj liczbe kolumn: ");
            int a = int.Parse(Console.ReadLine());
            Console.WriteLine("Podaj liczbę wierszy: ");
            int b = int.Parse(Console.ReadLine());

            int[,] tab = new int[a,b];
            Random rnd = new Random();
            int s;

            Console.WriteLine("Wartości tablicy: ");
            for ( int i = 0; i < a; i++)
            {
                
                for (int k = 0; k < b; k++)
                {
                    tab[i, k] = rnd.Next(0, 9);
                    s = tab[i, k];
                    Console.Write(s + " ");
                }
                Console.WriteLine(" ");
                
            }
            Console.WriteLine(" Pierwszy element to: " + tab[0, 0]);
            Console.WriteLine(s);

            Console.ReadLine();
            
        }
    }
} 
0

Zasadniczo, w C# nie ma czegoś takiego jak zmienna globalna. Możesz stworzyć statyczny element klasy Program, na przykład:

class Program
{
    private static int[,] tab;

    static void Main(string[] args)
    {
        // (...)
        tab = new int[a, b];
        // (...)
    }
}

Ale z treści twojego postu - dostania się do tablicy poza pętlą - nie oznacza, że to jest ci w ogóle potrzebne. Raczej problemem jest to, że zmienne i oraz k istnieją tylko wewnątrz odpowiednich pętli - wystarczy, że zadeklarujesz je przed pętlami, a potem tylko ustawisz wartości początkowe w odpowiednich forach.

0

ale jak deklaruje na samym poczatku zmienne i i k(poza pętlą) to poza pętlą jak przyzpisuje tablicę tab[i,k] to i tak nie odczytuje zmiennej k i nie wiem czemu :(

1

Błąd kompilacji:

Use of unassigned local variable 's'

Problem jest tutaj:

int s;

zmień na:

int s = 0;
0

ale ciągle pisze że use of unssigned local variable 'k' w tym kodzie i nie wiem dalej :(

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Podaj liczbe kolumn: ");
            int a = int.Parse(Console.ReadLine());
            Console.WriteLine("Podaj liczbę wierszy: ");
            int b = int.Parse(Console.ReadLine());

            int[,] tab = new int[a,b];
            Random rnd = new Random();
            int s=0;
            int k;
            int i;

            Console.WriteLine("Wartości tablicy: ");
            for ( i = 0; i < a; i++)
            {
                
                for ( k = 0; k < b; k++)
                {
                    tab[i, k] = rnd.Next(0, 9);
                    s = tab[i, k];
                    Console.Write(s + " ");
                }
                Console.WriteLine(" ");
                
            }
            s = tab[i, k];
            
            Console.WriteLine(" Pierwszy element to: " + tab[0, 0]);
            Console.WriteLine(s);

            Console.ReadLine();
            
        }
    }
}
0

Dzieje się tak ponieważ zrobiłeś ten sam błąd, który poprawiłem z tą różnicą, że przy zmiennej k i i. Rozumiem, że zmienna s ma wyświetlać ostatni element tej tablicy. Możesz to napisać tak:

Console.WriteLine("Podaj liczbe kolumn: ");
int a = int.Parse(Console.ReadLine());
Console.WriteLine("Podaj liczbę wierszy: ");
int b = int.Parse(Console.ReadLine());

int[,] tab = new int[a, b];
Random rnd = new Random();
int s = 0;
int i = 0;
int k = 0;

Console.WriteLine("Wartości tablicy: ");
for (i = 0; i < a; i++)
{
      for (k = 0; k < b; k++)
      {
            tab[i, k] = rnd.Next(0, 9);
            s = tab[i, k];
            Console.Write(s + " ");
      }
      Console.WriteLine(" ");
}

Console.WriteLine(" Pierwszy element to: " + tab[0, 0]);
Console.WriteLine(" Ostatni element to: " + tab[a-1, b-1]);

Console.ReadLine();
0

a czemu ta tablica nie wyswietla sie w debugerze jeśli napisze przed Console.ReadLine();

Console.WriteLine(s);

czyli wychodzi ze tej tablicy nie ma poza pętlą chociaz wyswietla 1 i ostatni punkt tablicy... bo nie rozumiem

dodanie znacznika <code class="csharp"> i `` - Furious Programming

0

nie właśnie funkcja s ma wyświetlać elementy tablicy i właśnie nie wiem jak to mam zapisać, tak jakby żeby zmienna s była tablicą wyświetloną w pętli, tylko żeby można z niej było korzystać poza pętlą

1 użytkowników online, w tym zalogowanych: 0, gości: 1