Witam, proszę o pomoc jak do danej litery przypisać wartość liczbową w C++, ponieważ bez tego musiałbym robić ogromną ilość instrukcji sterujących dla całego alfabetu, a nie wiem jak to zoptymalizować.
Jeśli ktoś potrzebuje więcej info to napiszę ;) Z góry dziękuję.
W jaki sposób przypisać? Chcesz do string
a dodać po prostu wartość liczbową? Czy może interesuje Cię, żeby pod konkretną wartością liczbową byłą litera?
W pierwszym przypadku potrzebujesz zamienić zmienną liczbową na (bzdety, bo nie doczytałem prośby). W drugim potrzebujesz użycia mapy.string
(Konwersje int na string i string na int), a następnie wykonać konkatenację napisów
Niech to będzie zwykła tablica liczb, której indeksy będą przyporządkowane kolejności znaków w tabeli ASCII. Dzięki temu będzie można otrzymać odpowiadającą liczbę w jednej linijce.
Jeżeli chcesz również obsłużyć polskie znaki to dodaj je na koniec tablicy i ten przypadek zrób ręcznie.
Albo użyj mapy, w której kluczem będzie znak, a wartością - twoja liczba.
Albo w ogóle zrezygnuj z własnych wartości i użyj te z tabeli ASCII - odpowiednio zmodyfikowane, jeżeli chcesz.
Potwierdzam -> hashmapa
Chodzi o to, ze wpisuję kolejne literki imienia
dla kazdej kolejnej litery mam przyporządkowaną wartość liczbową i na koniec je dodaje do siebie i dzielę przez liczbę liter w tym imieniu.
P.S. Zaczynam dopiero z c++ i może znam pojęcia itd., ale nie umie tego uzywac, proszę więc o pomoc jak zadeklarować tą tablicę. ;)
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
int main()
{
string a;
string d;
int b;
int c;
int po=0;
int pa=0;
cout << "Witaj w programie: Jak do siebie pasujecie?" << "\n";
cout << "Instrukcja:" << "\n";
cout << "Kazda literka musi zostac wprowadzona osobno i zatwierdzona enterem" << "\n";
cout << "Podaj liczbe liter w pierwszym imieniu" <<"\n";
cin >> b; "\n";
cout << "Wpisz kolejno litery pierwszego imienia" << "\n";
for (int i=0; i<b; i++)
{
cin >> a;"\n";
if(a=="a")
{
po=(po+1);
i;
}
if(a=="b")
{
po=po+2;
i;
}
if(a=="c")
{
po=po+3;
i;
}
if(a=="d")
{
po=po+4;
i;
}
if(a=="e")
{
po=po+5;
i;
}
if(a=="f")
{
po=po+6;
i;
}
if(a=="g")
{
po=po+7;
i;
}
if(a=="h")
{
po=po+8;
i;
}
if(a=="i")
{
po=po+9;
i;
}
if(a=="j")
{
po=po+10;
i;
}
if(a=="k")
{
po=po+11;
i;
}
if(a=="l")
{
po=(po+12);
i;
}
if(a=="m")
{
po=po+13;
i;
}
if(a=="n")
{
po=po+14;
i;
}
if(a=="o")
{
po=po+15;
i;
}
if(a=="p")
{
po=po+16;
i;
}
if(a=="q")
{
po=po+17;
i;
}
if(a=="r")
{
po=po+18;
i;
}
if(a=="s")
{
po=po+19;
i;
}
if(a=="t")
{
po=po+20;
i;
}
if(a=="u")
{
po=po+21;
i;
}
if(a=="v")
{
po=po+22;
i;
}
if(a=="w")
{
po=po+23;
i;
}
if(a=="x")
{
po=po+24;
i;
}
if(a=="y")
{
po=po+25;
i;
}
if(a=="z")
{
po=po+26;
i;
}
}
cout << "Podaj liczbe liter w drugim imieniu" << "\n";
cin >> c; "\n";
cout << "Wpisz kolejno litery drugiego imienia" << "\n";
for (int y=0; y<c; y++)
{
cin >> d;"\n";
if(d=="a")
{
pa=pa+1;
y;
}
if(a=="b")
{
pa=pa+2;
y;
}
if(a=="c")
{
pa=pa+3;
y;
}
if(a=="d")
{
pa=pa+4;
y;
}
if(a=="e")
{
pa=pa+5;
y;
}
if(a=="f")
{
pa=pa+6;
y;
}
if(a=="g")
{
pa=pa+7;
y;
}
if(a=="h")
{
pa=pa+8;
y;
}
if(a=="i")
{
pa=pa+9;
y;
}
if(a=="j")
{
pa=pa+10;
y;
}
if(a=="k")
{
pa=pa+11;
y;
}
if(a=="l")
{
pa=(pa+12);
y;
}
if(a=="m")
{
pa=pa+13;
y;
}
if(a=="n")
{
pa=pa+14;
y;
}
if(a=="o")
{
pa=(pa+15);
y;
}
if(a=="p")
{
pa=pa+16;
y;
}
if(a=="q")
{
pa=pa+17;
y;
}
if(a=="r")
{
pa=pa+18;
y;
}
if(a=="s")
{
pa=pa+19;
y;
}
if(a=="t")
{
pa=pa+20;
y;
}
if(a=="u")
{
pa=pa+21;
y;
}
if(a=="v")
{
pa==pa+22;
y;
}
if(a=="w")
{
pa=pa+23;
y;
}
if(a=="x")
{
pa=pa+24;
y;
}
if(a=="y")
{
pa=pa+25;
y;
}
if(a=="z")
{
pa=pa+26;
y;
}
}
double wynik;
wynik = (po/b) / (pa*c);
cout << wynik << "\n";
system("pause");
}
Szkoda tylko, że crashuje, a jeśli nie to wynik jest "nową matematyką".
O lol :D
int po = 0;
string imie;
...
cin >> imie;
for(int i = 0; i < imie.length(); i++)
{
po += imie[i] - 'a' + 1;
}
Przy polskich i dużych znakach wyniki będą nie takie jakbyś chciał, ale to już możesz sam pomyśleć. Poczytaj o ASCII
Generalnie całą logikę takiego programu można zawrzeć w jednej linijce.
http://ideone.com/HMPMo
jesteś genialny!
tylko jak mozesz wytłumacz co oznaczają te funkcje ;)