👤

(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.
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Nu ezitați să ne contactați pentru orice întrebare sau dacă aveți nevoie de asistență suplimentară. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!


ID Learners: Alte intrebari