1

Тема: Порахувати кількість літер "d" в рядку за допомогою вказівників

Привіт, мені треба підрахувати скільки разів зустрічається буква "d" в рядку за допомогою вказівників

Ось мій варіант, але він показує неправильне число
Як виправити програму?
Допоможіть будь ламка я лише почав вчити С

#include <stdio.h>

int main ()
{

   int *letters_d;
   char str[100];

   printf("Type a string: ");
   gets(str);

   for(int i = 0; str[i] != '\0'; i++) {
      if (str[i] == 'd')
      {
         letters_d = letters_d + 1;
      }
   }
   printf("Letters 'd' in '%s' is: %d\n\n", str, *letters_d);

   
   getchar();
   return 0;
}

2

Re: Порахувати кількість літер "d" в рядку за допомогою вказівників

Ось ніби поправив, тут все правильно чи щось доробити???

#include <stdio.h>

int main ()
{

   int *letters_d;
   char str[100];

   printf("Type a string: ");
   gets(str);

   int count = 0;
   for(int i = 0; str[i] != '\0'; i++) {
      if (str[i] == 'd')
      {
         letters_d = &count;
         count++;
      }
   }
   printf("Letters 'd' in '%s' is: %d\n\n", str, count);

   
   getchar();
   return 0;
}

3

Re: Порахувати кількість літер "d" в рядку за допомогою вказівників

Ну у вас завдання «за допомогою вказівників», скоріше всього це значить, що потрібно писати замість

str[i]
 *(str+i).

І ще, який сенс у letter_d, щось не виходить у мене уловити?

Подякували: Regen1

4 Востаннє редагувалося koala (22.05.2014 19:12:04)

Re: Порахувати кількість літер "d" в рядку за допомогою вказівників

По першому варіанту - зустрічна задача: Буратіно дали 5 яблук, 3 з них він віддав Мальвіні, скільки в нього лишилося яблук? Підказка: правильна відповідь - не "2".

Прихований текст

Особливо з урахуванням, що у вас замість яблук Мальвіна гризтиме таблички з написом "золотий ключик".

По задачі в цілому: я не бачу, щоб ви лічили щось за допомогою вказівників. Почитайте щось про роботу з рядками за допомогою вказівників, ок?

правильна відповідь на мою задачу

на 2 більше, ніж було в нього до початку задачі. А ви letters_d не ініціалізували.

правильна відповідь на вашу задачу
   /*syntax sugar самі додасьте*/  
   char str[100];
   int count = 0;
 
   printf("Type a string: ");
   gets(str);
 
   for(char *s = str; *s != '\0'; s++) {
      if (*s == 'd')
      {
          ++count;
      }
   }
   printf("Letters 'd' in '%s' is: %d\n\n", str, count);