Konwertowanie liter na liczby

Konwertowanie liter na liczby
  • Rejestracja: dni
  • Ostatnio: dni
0

O stary..... wielkie pokłony i podziękowanie dla Ciebie, nigdy w życiu bym na to nie wpadł :D . Faktycznie, teraz spacja ma wartość 0, inne znaki również mają takie jakie powinny być i wszystko działa!! No.... prawie. Jak wpiszę wyraz na 4 litery to nadal mi wywala błąd, no i dokładnie taki, jak powyżej jeden kolega wspomniał: "Indeks wykraczał poza granice tablicy.". Hmmm... jak to naprawić??

P.S. Obawiam się, że w tym kodzie powyżej też jest błąd, bo na końcu jest użyte if, ale.... już bez else a raczej powinno być zawsze :P (albo jeżeli się mylę to mnie poprawcie). Jeżeli zdanie jest fałszywe to musi w zamian coś innego zrobić.

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0
ujemny napisał(a)
Kopiuj
char[] znaki = {' ', '-', '?', '/', '.', ',', '(', ')', ':', ';', '[', ']', '<','>', '!', '*'};
int[] wart = {0, 227, 230, 243, 232, 244, 154, 155, 156, 157, 158, 159, 225, 226, 231, 241};

Słownik emulowany dwiema tablicami, co to ma być? :|

"Indeks wykraczał poza granice tablicy.". Hmmm... jak to naprawić??

Rozwiązanie jest w moim poprzednim poście. Co Ci się w nim nie podoba?

P.S. Obawiam się, że w tym kodzie powyżej też jest błąd, bo na końcu jest użyte if, ale.... już bez else a raczej powinno być zawsze :P (albo jeżeli się mylę to mnie poprawcie).

Bardzo się mylisz.

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12270
0
MaarioS napisał(a)

Jak wpiszę wyraz na 4 litery to nadal mi wywala błąd, no i dokładnie taki, jak powyżej jeden kolega wspomniał: "Indeks wykraczał poza granice tablicy.". Hmmm... jak to naprawić??

Wspomniałem wcześniej, że nigdzie w pętli nie jest sprawdzane czy podany ciąg ma te 5 znaków czy nie; @somekind także napisał Ci przykład w jaki sposób sprawdzić to (choć sam nie rozumiem tego zapisu... ale ja nie muszę, a Ty tak);

Kopiuj
for(int i = 0; i < 5; i++)

Tu jest na sztywno wpisane 5, a trzeba najpierw sprawdzić długość tego ciągu a później w pętli podać wartość wcześniej ustaloną, @somekind podał Ci rozwiązanie:

Kopiuj
int max = wyraz.Length >= 5 ? 5 : wyraz.Length;

wystarczy je tylko odpowiednio wpisać do programu;

  • Rejestracja: dni
  • Ostatnio: dni
0

NARESZCIE!!! @Furious Programming, na początku, jak to się mówi, miałem wrażenie w stylu "czarna dupa" jak to przeczytałem, ale jednak.... pomyślałem trochę, jak to zrobić, no i zmieniłem trochę 2 linijki kodu i zadziałało!!! :D Te ostatnie 2 linijki kodu napisałem dokładnie tak:

for(int i = 0; i < max; i++)
int max = wyraz.Length >= 5 ? 5 : wyraz.Length;

...aczkolwiek mam nadzieję, że żadnych błędów po drodze nie będzie, bo jak na razie wpisywałem słowa 4, 2, 5 jak i 7 znakowe i na razie nic się nie wysypało :P . Oto mój wynalazek w całości:

Console.WriteLine("Siema");
Console.WriteLine("Podaj wyraz");
char[] znaki = { ' ', '-', '?', '/', '.', ',', '(', ')', ':', ';', '[', ']', '<', '>', '!', '*' };
int[] wart = { 127, 227, 230, 243, 232, 244, 154, 155, 156, 157, 158, 159, 225, 226, 231, 241 };
string wyraz;
int suma = 0;
wyraz = Console.ReadLine();
int max = wyraz.Length >= 5 ? 5 : wyraz.Length;
for (int i = 0; i < max; i++)
if (wyraz[i] > 64 && wyraz[i] < 91 || wyraz[i] > 96 && wyraz[i] < 123)
suma = suma + wyraz[i] + 63;
else
for (int j = 0; j < 16; j++)
if (wyraz[i] == znaki[j])
suma = suma + wart[j];
Console.WriteLine(suma);
Console.ReadKey();

Naprawdę niesamowite dzięki za pomoc, jesteście genialni!!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.