Przekazanie ciągu cyfr do tablicy

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]?

0

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

0
char[] nazwa_tablicy = "123456".ToCharArray()
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:

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;
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:

int wynik = int.Parse(t[0]) * 2 + int.Parse(t[1]) * 3 + ...
0

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

using System.Numerics; // upewnij sie ze masz referencje do System.Numerics.dll
...
BigInteger n = BigInteger.Parse("12312312312313");
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:

 
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)

0

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

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

2
```csharp string inputText = this.number.Text; int result = Convert.ToInt32(inputText[0]) * 2 + Convert.ToInt32(inputText[1]) * 3;
</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
0

a jednak dalej coś nie tak..

 int wynik = (Convert.ToInt32(cyfry[0]) * 6);  
this.pokazwynik.Text = wynik.ToString(); // powinno być 8 * 6 = 48 a jest 8 * 6 = 336 dlaczego?
0

Sprawdź to:

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();
        }
    }
}

 
0
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;
1
    static int[] StringToDigits(string s)
    {
        return s.Select(c => int.Parse(c.ToString()))
                .ToArray();
    }

I przykładowe wyliczanie sprawdzanie czy PESEL jest poprawny.

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;
        }
    }
}
1
zxxcxzcxzzx napisał(a):
    static int[] StringToDigits(string s)
    {
        return s.Select(c => int.Parse(c.ToString()))
                .ToArray();
    }

Raczej StringToOneDigitNumbers.

0

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

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?

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