Informatică, întrebare adresată de 27vlad09, 9 ani în urmă

Prin asocierea fiecărei litere mici din alfabetul englez cu un număr egal cu poziția literei în alfabet,
se poate codifica orice secvență de litere mici cu o secvență de numere. Scrieți un program C++
care citește din fișierul text cod.txt un număr n (0 ăde n litere mici. Folosind un algoritm eficient din punctul de vedere al gestionării memoriei,
programul va codifica secvența de caractere citită și va scrie pe ecran numerele asociate,
separate prin spații. Exemplu: pentru fișierul cod.txt:
7
bacinfo
se vor afișa pe ecran, în ordine, numerele:2 1 3 9 14 6 15.

Răspunsuri la întrebare

Răspuns de blindseeker90
3
#include <iostream>
using namespace std;
int main()
{
  char c;
  int n;
  cin>>n;
  while(n>0){
     cin>>c;
     cout<<c-'a'+1<<" ";
     n--;
  }
  return 0;
}

Programul este eficient ca memorie pentru ca foloseste doar 2 variabile: n pentru numarul total de caractere, c pentru un caracter. Ambele variabile sunt necesare citirii datelor. Nu este folosit un vector de caractere pentru caractere si nici variabile pentru iteratie(for i..)
Programul este eficient ca viteza pentru ca trece prin toate caracterele o singura data si genereaza codarea la fiecare caracter in parte imediat ce l-a citit. Deci are viteza de tip O(n)
Alte întrebări interesante