Не работает функция с указателями - C (СИ)
Формулировка задачи:
Массив из 20 элементов, выводится автоматически, 2 функции:
1) считает пары рядом стоящих одинаковых элементов при помощи
индексов
i_pare 2) считает пары рядом стоящих одинаковых элементов при помощиуказателей
p_pare 1 функция с индексами - работает 2 функция с указателями -не работает
можете исправить ошибку? код:#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <windows.h>
#define vec1 20
#define vec2 25
void i_pare(int vector[vec1], const int size);
void p_pare(int *vector, const int size);
int main()
{//1
int vector[vec1], i;
system("cls");
srand(time(NULL));
printf("Viendimensiju mavivs:\n");
for(i = 0; i < vec1; i++)
{
vector[i]=2-rand()%4;
printf("%3d", vector[i]);
}
printf("\n\n");
printf("Paru skaits ar indeksu metodi:\n");
i_pare(vector, vec1);
printf("\n\n");
printf("Paru skaits ar raditaju metodi:\n");
p_pare(vector, vec1);
printf("\n");
system("pause");
//getch();
return 0;
}//1
void i_pare(int vector[vec1], const int size)
{//1a
int i , count = 0;
for(i = 0; i < size-1; ++i)
if(vector[i] == vector[i+1])
++count;
printf("%d ", count);
}//1a
void p_pare(int *vector, const int size)
{//2a
int i, count =0;
for(i = 0; i < size-1; ++i)
if(*vector == *(vector+1))
++count;
printf("%d ", count);
}//2aРешение задачи: «Не работает функция с указателями»
textual
Листинг программы
void p_pare(int *vector, const int size)
{//2a
int i, count =0;
for(i = 0; i < size-1; ++i)
if(*(vector+i) == *(vector+i+1)) //здесь была ошибка
++count;
printf("%d ", count);
}//2a
Объяснение кода листинга программы
В данном коде представлена функция с именем p_pare, которая принимает два аргумента: int *vector и const int size. Функция выполняет следующие действия:
- Объявляет две переменные: i и count, которые будут использоваться в цикле. Значение переменной count инициализируется нулем.
- Запускает цикл for, который начинается с i = 0 и продолжается до i < size-1. То есть цикл будет выполняться для каждого элемента вектора, кроме последнего.
- Внутри цикла проверяет, равны ли значения текущего элемента вектора и следующего элемента вектора. Если они равны, то значение переменной count увеличивается на единицу.
- После завершения цикла выводит значение переменной count с помощью функции printf. Значение count будет выводиться вместе с пробелом. Таким образом, данный код считает количество одинаковых элементов в векторе и выводит это количество.