Передача указателей в функцию - C (СИ)
Формулировка задачи:
Программа находит наибольшее число одинаковых рядом идущих символов, и выводит на экран это число и символ, который был повторен.
Например
На входе массив: {aaabbbbbccaaa}
Результат: 5b (То есть связка из b наиболее длинна и протягивается в количестве 5 одинаковых символов)
Реализовать нужно, при помощи указателей.
Без указателей, если решение в main, все работает, но вот когда попытался прикрутить указатели в функцию dec- запутался...
Подскажите что не так? Где моя ошибка?
#include <stdio.h> #include <stdlib.h> #define SIZE 1024 void input(char *arr){ gets_s(arr, SIZE); } void dec(char **arr, char *r, int *max, int *count){ for (int i = 0; i < *arr[i] != '\0'; i++) { if (*arr[i] == *arr[i + 1]){ *max++; if (*max > *count){ *count = *max; *r = *arr[i]; } } else *max = 1; } } void output(char r, int count){ printf("%d\n", count); printf("%c\n", r); } void main(){ char arr[SIZE]; char r=0; int count = 0; int max = 1; input(arr); dec(&arr, &r, &max, &count); //for (int i = 0; i < arr[i] != '\0'; i++) //{ // if (arr[i] == arr[i + 1]){ // max++; // if (max > count){ // count = max; // r = arr[i]; // } // } // else max = 1; //} output(r,count); system("pause"); }
Решение задачи: «Передача указателей в функцию»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #define SIZE 1024 void input(char *arr) { gets(arr); } void dec(char *arr, char *r, int *max, int *count) { for (; *arr != '\0'; arr++) { if (*arr == *(arr+1)) { (*max)++; if (*max > *count) { *count = *max; *r = *arr; } } else *max = 1; } } void output(char r, int count) { printf("%d\n", count); printf("%c\n", r); } int main() { char arr[SIZE]; char r=0; int count = 0; int max = 1; input(arr); dec(arr, &r, &max, &count); output(r,count); system("pause"); }
Объяснение кода листинга программы
- Объединение двух строк с помощью оператора
+
- Присваивание значения переменной
max
значению переменнойcount
- Присваивание переменной
r
значение символа из массиваarr
- Увеличение значения переменной
max
на единицу - Сравнение значений переменных
max
иcount
- Увеличение значения переменной
count
на единицу - Установка значения переменной
max
равным единице - Установка значения переменной
count
равным единице - Установка значения переменной
r
равным нулю - Ввод значения массива
arr
с помощью функцииgets
- Вывод значения переменной
count
на экран - Вывод значения переменной
r
на экран - Объявление функции
input
- Объявление функции
dec
- Объявление функции
output
- Объявление функции
main
- Создание массива
arr
типа char с размером 1024 - Создание переменной
r
типа char со значением 0 - Создание переменной
count
типа int со значением 0 - Создание переменной
max
типа int со значением 1
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д