printf("Слів = %i, знаків \'-\',\',\',\'.\' = %i, за все потрібно заплатити %lf гривень.",c,p,(2.5*c+0.5*p));
free(s);
return 0;
}
Пояснення:Багато коду де вкрав, сподіваюся, що коректно працює, використано динамічну пам'ять для довільного рядка та функцію strtok для розділення для слів, для підрахунку знаків просто порівнював кожний символ за вказівником.
Answers & Comments
Відповідь:
#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 для розділення для слів, для підрахунку знаків просто порівнював кожний символ за вказівником.