Передача указателей в функцию - 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