Przekazanie ciągu cyfr do tablicy

Przekazanie ciągu cyfr do tablicy
d4ng
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
0

Witajcie, mam pierwsze pewnie elementarne pytanie ale w jaki sposób mogę przekazać ciąg cyfr np "123456" do tablicy żeby otrzymać 1, 2, 3, 4, 5, 6? a potem jak mam się odnosić do poszczególnych jej elementów nazwatablicy[0]?

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

string s = "123456" to już jest tablica, możesz się odwoływać przez s[0] itd.

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 71
0
Kopiuj
char[] nazwa_tablicy = "123456".ToCharArray()
d4ng
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
0

dziękuje wszystkim za odpowiedź jednak muszę wykonać pewne operacje na elementach tablicy np.

mam ciąg cyfr o którym pisałem wcześniej (123456) który chce umieścić w tablicy a żeby później przemnożyć go z innym ciągiem znaków (237045) a potem jeszcze zsumować wyniki mnożeń w taki sposób:

Kopiuj
1, 2, 3, 4, 5, 6 // te będą podawane przez użytkownika
237045 // a te stałe

(t[0]*2) + (t[1]*3) + (t[2]*7) + (t[3]*0) + (t[4]*4) + (t[5]*5) = wynik;
somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0
d4ng napisał(a):

mam ciąg cyfr o którym pisałem wcześniej (123456) który chce umieścić w tablicy a żeby później przemnożyć go z innym ciągiem znaków (237045)

Nie da się mnożyć cyfr ani ciągów znaków, mnożyć można liczby.
Rozumiem, że chcesz cyfry wpisane przez użytkownika skonwertować na liczby, żeby móc na nich później wykonywać operacje arytmetyczne. Możesz to zrobić np. tak:

Kopiuj
int wynik = int.Parse(t[0]) * 2 + int.Parse(t[1]) * 3 + ...
KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2518
0

Jeśli liczba może być bardzo długa to wtedy:

Kopiuj
using System.Numerics; // upewnij sie ze masz referencje do System.Numerics.dll
...
BigInteger n = BigInteger.Parse("12312312312313");
BartoszSz
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 16
0

Co do wykonywanie obliczeń to możesz je wykonać na elementach tego ciągu. Jeśli chcesz mnożyć odpowiadające sobie wartości to zrób to w pętli np:

Kopiuj
 
for (int i = 0; i < ciag1.Length; i++)
{
   ciag3[i] = ciag1[i] * ciag2[i];
}

Gdzie 2 ciągi znasz, a trzeci ciąg to ciąg pusty o długości poprzednich (lub jeśli nie mają tyle samo el. to tego większego)

d4ng
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
0

Ponownie dziękuje za aktywność ;) jednak wciąż mam problem...

Kopiuj
string wprowadzonyciagliczb = this.liczby.Text;
char[] tab = wprowadzonyciagliczb.ToCharArray();
int wynik = int.Parse(tab[0]) * 2 + int.Parse(tab[1]) * 3;

Error 1 W najlepiej dopasowanej metodzie przeciążonej metody „int.Parse(string)” występują nieprawidłowe argumenty. C:\Users\Jarek\Desktop\NAUKA ASP NET zad2\Default.aspx.cs 87 25 NAUKA ASP NET zad2
Error 2 Argument 1: nie można wykonać konwersji z char” na string. C:\Users\Jarek\Desktop\NAUKA ASP NET zad2\Default.aspx.cs 87 35 NAUKA ASP NET zad2

mto9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 380
2
```csharp string inputText = this.number.Text; int result = Convert.ToInt32(inputText[0]) * 2 + Convert.ToInt32(inputText[1]) * 3;
Kopiuj
</del>

EDIT: najpoprawniejszym rozwiązaniem będzie:
```csharp
string inputText = this.number.Text;
double result = Char.GetNumericValue(inputText[0]) * 2 + Char.GetNumericValue(inputText[1]) * 3
d4ng
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
0

a jednak dalej coś nie tak..

Kopiuj
 int wynik = (Convert.ToInt32(cyfry[0]) * 6);  
this.pokazwynik.Text = wynik.ToString(); // powinno być 8 * 6 = 48 a jest 8 * 6 = 336 dlaczego?
GC
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 249
0

Sprawdź to:

Kopiuj
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            String cyfry = textBox1.Text;
            int wynik = (int.Parse(Convert.ToString(cyfry[0])) * 6 + int.Parse(Convert.ToString(cyfry[1])) * 2);
            label1.Text = wynik.ToString();
        }
    }
}

 
KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2518
0
Kopiuj
int CharToInt(char c)
{
  // zakladam ze c jest z przedzialu '0' do '9'
  return Convert.ToInt32(c) - Convert.ToInt32('0');
}
...
int result = CharToInt(inputText[0]) * 2 + CharToInt(inputText[1]) * 3;
  • Rejestracja: dni
  • Ostatnio: dni
1
Kopiuj
    static int[] StringToDigits(string s)
    {
        return s.Select(c => int.Parse(c.ToString()))
                .ToArray();
    }

I przykładowe wyliczanie sprawdzanie czy PESEL jest poprawny.

Kopiuj
using System;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        Console.Write("Podaj pesel: ");
        string pesel = Console.ReadLine();
        int[] peselDigits = StringToDigits(pesel);

        if (Pesel.IsCorrect(peselDigits))
            Console.WriteLine("Wprowadzony pesel jest poprawny.");
        else
            Console.WriteLine("Wprowadzony pesel nie jest poprawny.");

        Console.ReadLine();
    }


    static int[] StringToDigits(string s)
    {
        return s.Select(c => int.Parse(c.ToString()))
                .ToArray();
    }

    static class Pesel
    {
        static int[] _scales = StringToDigits("13791379131");

        public static bool IsCorrect(int[] digits)
        {
            if (digits.Length != 11)
                return false;

            int checksum = digits.Zip(_scales, (a, b) => a * b)
                                 .Sum();

            return checksum % 10 == 0;
        }
    }
}
somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
1
zxxcxzcxzzx napisał(a):
Kopiuj
    static int[] StringToDigits(string s)
    {
        return s.Select(c => int.Parse(c.ToString()))
                .ToArray();
    }

Raczej StringToOneDigitNumbers.

  • Rejestracja: dni
  • Ostatnio: dni
0

Nie jestem specem, ale jak już miałbym myśleć nad ostateczną nazwą, to raczej StringToDecimalDigits, bo to najlepiej oddaje rezultat.

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
1

Efektem działania tej metody są liczby, a nie cyfry, więc nic z "ToDigits" na końcu nie będzie prawidłowe.

Wszyscy wiemy, czym się różni cyfra od liczby, prawda?

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.