На СИ. Срочно. 100 баллов
Определить стоимость телеграммы, если известно, что каждое слово стоит 2,5 грн, а знаки '-', ',', '.' стоят 0,5 грн. ...
Ответы
Відповідь:
#include <stdio.h>
#include <stdlib.h>
char *get_string(int *len) {
*len = 0;
int capacity = 1;
char *s = (char*) malloc(sizeof(char));
char c = getchar();
while (c != '\n') {
s[(*len)++] = c;
if (*len >= capacity) {
capacity *= 2;
s = (char*) realloc(s, capacity * sizeof(char));
}
c = getchar();
}
s[*len] = '\0';
return s;
}
int main() {
setlocale(0,"");
int len,c = 0,p=0;
char *s = get_string(&len);
char * pch = s;
char t[] = {' ','.',',','-'};
while(*pch!=NULL){
if(*pch=='.'||*pch==','||*pch=='-') p++;
pch++;
}
pch = strtok (s,t);
while (pch != NULL)
{
pch = strtok (NULL, t);
c++;
}
printf("Слів = %i, знаків \'-\',\',\',\'.\' = %i, за все потрібно заплатити %lf гривень.",c,p,(2.5*c+0.5*p));
free(s);
return 0;
}
Пояснення:Багато коду де вкрав, сподіваюся, що коректно працює, використано динамічну пам'ять для довільного рядка та функцію strtok для розділення для слів, для підрахунку знаків просто порівнював кожний символ за вказівником.