bounds of the array. niemożliwe!

0

Witam,ostatnipo trenuje sobie C# pisząc proste programiki.Mam takie zadanko:

Napisać program, który pobiera ciąg cyfr i wypisuje ciąg znaków w postaci słownego zapisu tych cyfr. Np. dla ciągu "321" wypisywane jest "trzy dwa jeden".
Wskazówka:

program wygląda tak:using System;

class Program
{
static void Main()
{
string[] wyrazy=new String[10];
wyrazy[0]="zero";
wyrazy[1]="jeden";
wyrazy[2]="dwa";
wyrazy[3]="trzy";
wyrazy[4]="cztery";
wyrazy[5]="piec";
wyrazy[6]="szesc";
wyrazy[7]="siedem";
wyrazy[8]="osiem";
wyrazy[9]="dziewiec";

  Console.WriteLine("podaj liczbę");
   string liczba=Console.ReadLine();
   for (int i=0;i<=liczba.Length-1;i++)
   {
       char znak=liczba[i];
       int a = Convert.ToInt32(znak);
       Console.WriteLine(wyrazy[a]); // tutaj pokauje błąd
   }
   Console.ReadLine();

}
}


Mniejsza o to że tablicy używam,dlaczego mam bonus of array ? Convertuje sobie to pięknie i ma wyświetlić mi to co kryje się w tabelce pod nr. który podałem.Jeżeli jest osoba która wytłumaczy mi gdzie i DLACZEGO jest błąd będę wdzięczyny
Pozdrawiam
Marek
0

może by tak sprawdzić jaką wartość przyjmuje a gdy zgłasza wyjątek?

0

mnie się wydaje że znak po skonwertowaniu do int32 przyjmie jego kod ascii. lepiej by było zrobić coś w stylu:
int a = Convert.ToInt32(znak)-48; // 48 - kod ascii 0, nie jestem pewien czy w C# działa konstrukcja: int a = znak-'0'; tak jak w c++

0

@up: Dobrze Ci się wydaje :)
można jeszcze tak: int a = Convert.ToInt32(liczba.Substring(i, 1));

@autor: zauważ różnicę w działaniu tych dwóch funkcji:
http://msdn.microsoft.com/en-us/library/ww9t2871.aspx
http://msdn.microsoft.com/en-us/library/sf1aw27b.aspx

0

Jeżeli konwertujesz char na int, to dostaniesz numer znaku (jak pisał krwq '0' to 48, '1' to 49 itd).
Inny sposób mniej elegancki :

 int a = Convert.ToInt32(znak.ToString());

EDIT:
Jak widzisz ile programistów, tyle rozwiązań ;).

0

Kurde NO! całkowicie zapomniałem że (int) char konvertuje na kod ascii achhh...taki drobny błąd ;) wielkie dzięki za pomoc
Pozdrawiam

1

Mi działa takie coś (bez zbędnego konwertowania):

static void Main(string[] args)
        {
            String[] wyrazy = { "zero", "jeden", "dwa", "trzy", "cztery", "piec", "szesc", "siedem", "osiem", "dziewiec" };

            Console.WriteLine("podaj liczbę");
            String liczba = Console.ReadLine();
            for (int i = 0; i <= liczba.Length - 1; i++)
            {
                Console.Write(wyrazy[liczba[i] - '0'] + " "); // tutaj pokauje błąd
            }
            Console.ReadLine();
        }

//EDIT: Trochę poprawiony :)

0

Jednego tylko nie rozumiem, czemu nie można inicjalizować tablicy tak?

 string[] wyrazy = { "zero", "jeden", "dwa", "trzy", "cztery", "piec", "szesc", "siedem", "osiem", "dziewiec" };

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