Funkcja przypisująca wyrazowi jego wagę

0

Wagą słowa nazywamy sumę kodow ( w systemie dziesiętnym) ASCII liter danego słowa:
a) Napisz funkcję Wagaslowa , która jako argument przyjmuje napis (co najwyżej 30 znakowy), a zwraca wagę tego słowa.
b) W pliku Slowa.txt zapisano zbiór słów (po jednym w każdym wierszu) . Napisz program, który do pliku Zwazoneslowa.txt zapisze wagi słów z pliku Slowa.txt następująco : w każdej linii ma byc jedno słowa spacja odstępu i waga slowa. Ponadto program ma wyświetlić na ekranie najwyższą wagę spośród wszystkich słów . np. MAMA waga wynosi:77+65+77+65.

Wiem , że litery przyjmują wagi od 65 dla A do 91 dla Z . Nie wiem jak napisać tą funkcję , żeby w zależności od długości słowa przypisywała wagi i jak połączyć to z przypisaniem wagi do danej litery

0

możesz zapisać w wektorze, ew. w tablicy taką informację:

'A' ,30
'B',40

itd.
i iterujesz po slowach sprawdzając jaką ma wartość na końcu robisz zwykłe sumowanie

30+40+....+

albo mądrzej (optymalniej)
A wystąpiło 10x to 10 * 40 + ...

0

Ten pattern, (już go Znasz, użyłem w tym wątku: https://4programmers.net/Forum/C_i_C++/327140-szukanie_slow_bedacych_metagramami), jest jednym z podstawowych w programowaniu. Tu też można zrobić tak samo(bez gotowca, kod ASCII to wartość liczbowa znaku):

int ascii_sum(char * expr) {
	int sum = 0;
	while (*expr) {
		sum += _____;
		expr++;
	}
	return sum;
}
0
> python3 -c 'import sys; print("max:", *max((wt, w) for ln in sys.stdin for w in (ln.rstrip("\n"),) for wt in (sum(map(ord, w)),) for _ in (print(wt, w),)), file=sys.stderr)' <words
539 Kate321
896 youmound
589 lion137
545 Mózg
max: 896 youmound
> 

@kmph o/

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