👤

(C#)Aveti vreo idee cum se face??
Un cod PIN de 4 cifre e ascuns într-un text pe 3 linii astfel:

pe prima linie e un text de lungime variabilă mai mare ca 4, compus doar din cifre de la 0 la 9
pe a doua line e codificat indexul de unde începe codul PIN ascuns în textul de pe prima linie. Valorile posibile sunt literele a, b sau c, iar a indică că indexul de start e 0, b că indexul de start e 1, iar c că indexul de start e 2
pe a treia linie e un număr ce indică din câte în câte caractere trebuie să sărim în textul de pe prima linie (începând cu indexul de start precizat anterior) pentru a descoperi cele 4 cifre ale codului PIN
De exemplu, pentru datele de intrare:
123456789
b
2

b indică că trebuie să începem cu cifra ce are indexul 1 în textul de pe prima linie: adică cifra 2. După care trebuie să mergem din 2 în 2 caractere (după cum e indicat pe linia 3) pentru a gasi celelalte cifre ale codului PIN: 4 (are indexul 3), 6 (are indexul 5) și 8 (are indexul 7).

Deci codul PIN în acest caz e 2468

Să se scrie o aplicație consolă ce descifrează codul PIN ascuns.

Sugestie: Folosiți execuția pas cu pas pentru a localiza și fixa eroarea din proiectul atașat.

Exemplu:

Pentru datele de intrare:

122333444456789123
a
4
La consolă se va afișa:

1347


Răspuns :

Pentru a crea o aplicație de consolă în C# care descifrează un cod PIN ascuns conform specificațiilor date, vom urma acești pași:

1. Citim cele trei linii de intrare.
2. Identificăm indexul de start din text folosind a doua linie.
3. Citim numărul de salturi din a treia linie.
4. Extragem și afișăm codul PIN folosind indexul de start și numărul de salturi.

Iată un exemplu de cod C# care face acest lucru:

```csharp
using System;

class Program
{
static void Main()
{
// Citim cele trei linii de intrare
string line1 = Console.ReadLine();
string line2 = Console.ReadLine();
string line3 = Console.ReadLine();

// Determinăm indexul de start pe baza valorii din linia 2
int startIndex;
switch (line2)
{
case "a":
startIndex = 0;
break;
case "b":
startIndex = 1;
break;
case "c":
startIndex = 2;
break;
default:
Console.WriteLine("Index invalid.");
return;
}

// Citim numărul de salturi din linia 3
if (!int.TryParse(line3, out int step))
{
Console.WriteLine("Număr de salturi invalid.");
return;
}

// Construim codul PIN folosind indexul de start și numărul de salturi
string pin = "";
for (int i = 0; i < 4; i++)
{
int currentIndex = startIndex + i * step;
if (currentIndex < line1.Length)
{
pin += line1[currentIndex];
}
else
{
Console.WriteLine("Lungimea textului este insuficientă pentru a extrage codul PIN.");
return;
}
}

// Afișăm codul PIN
Console.WriteLine(pin);
}
}
```

### Explicația codului:
1. **Citirea liniilor de intrare:** Cele trei linii de intrare sunt citite folosind `Console.ReadLine()`.
2. **Determinarea indexului de start:** Folosim un `switch` pentru a converti litera de pe a doua linie (`a`, `b` sau `c`) într-un index numeric (`0`, `1`, `2`).
3. **Citirea numărului de salturi:** Convertim linia a treia într-un număr întreg folosind `int.TryParse`.
4. **Construirea codului PIN:** Parcurgem textul de pe prima linie începând de la `startIndex` și sărim cu `step` poziții de fiecare dată pentru a extrage cele 4 cifre necesare.
5. **Afișarea codului PIN:** Afișăm codul PIN folosind `Console.WriteLine`.

Acest cod ar trebui să funcționeze corect pentru orice date de intrare care respectă formatul specificat. Asigurați-vă că introduceți datele corect când rulați aplicația pentru a obține rezultatele dorite.