Coś jak Kalkulator miłości

0

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ę.

0

W jaki sposób przypisać? Chcesz do stringa 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 string (Konwersje int na string i string na int), a następnie wykonać konkatenację napisów (bzdety, bo nie doczytałem prośby). W drugim potrzebujesz użycia mapy.

0

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.

0

Potwierdzam -> hashmapa

1

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ą".

3

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

2

Generalnie całą logikę takiego programu można zawrzeć w jednej linijce.
http://ideone.com/HMPMo

0

jesteś genialny!
tylko jak mozesz wytłumacz co oznaczają te funkcje ;)

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