Сосчитать пары рядом стоящих одинаковых элементов массива - C (СИ) (78245)

Узнай цену своей работы

Формулировка задачи:

Есть 20-ти значный массив один с индексами второй с указателями, надо написать функцию для каждого массива которая будит выводит ответ на экран. Функция: сосчитать пары рядом стоящих одинаковых элементов, вывести количество пар на экран.. пример: Одномерный массив из 20 элементов: 2 0

1 1

5 0 8 1 6 4 3 8

6 6

4 4

3 2

0 0

Ответ: 4 пары

не надо выводит пары, а просто вывести ответ сколько пар с одинаковыми элементами подряд имеется в массиве.. как указано в примере.. массив с индексами:
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <windows.h>
 
#define N 20   
 
int main()
{//1
   int vektors[N], i,;
 
   system("cls");
   srand(time(NULL));
   printf("Masivi:\nViendimensijas masivs\n");
   for(i=0; i<N; i++)
       {//2
          vektors[i]=rand()%20; 
          printf("%4d", vektors[i]);
       }//2
printf("\n");
getch();
}//1
массив с указателями:
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <time.h>
#define RINDAS 1
#define KOLONAS 20
 
int main()
{//1
 int *mas, *vector, rez, i, j;
 system("cls");
 srand(time(NULL));
 
 vector = (int *)malloc(RINDAS * sizeof(int *)); 
 mas = (int *)malloc(RINDAS * KOLONAS * sizeof(int *));
 printf("\nVektors\n");
 for(i=0; i<KOLONAS; i++)
 printf("%3d", *(vector+i)=rand()%5);
 printf("\n");
 system("pause");
}//1
можете написать обе функции и вставить в код чтоб всё работало..

Решение задачи: «Сосчитать пары рядом стоящих одинаковых элементов массива»

textual
Листинг программы
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <conio.h>
 
#define SIZE 5
 
int numOfPairs(int *arr, int size)
{
    int i, count = 0;
    
    for(i = 1; i < size; ++i)
        if(arr[i] == arr[i - 1])
            ++count;
    
    return count;
}
    
 
int main(void)
{
    srand(time(NULL));
    int n, *fArr, sArr[SIZE] = { 1, 1, 1, 2, 3 }, count = 0, i;
    
    printf("Enter the size of first array: ");
    scanf("%d", &n);
    
    fArr = (int*) malloc (sizeof(int) * n);
       
    printf("\nFirst array:\n");
    for(i = 0; i < n; ++i)
    {
        fArr[i] = rand() % 3;
        printf("%d ", fArr[i]);
        
        /*if((i > 0) && (arr[i] == arr[i - 1]))
            ++count;*/
    }
           
    printf("\n\nNumber of pairs in the first array: %d\n\n", numOfPairs(fArr, n));
    
    printf("Second array:\n");
    for(i = 0; i < SIZE; ++i)
        printf("%d ", sArr[i]);
        
    printf("\n\nNumber of pairs in the second array: %d", numOfPairs(sArr, n));
    
    getch();
    free(fArr);
    return 0;
}

Объяснение кода листинга программы

  1. Предполагается, что задача заключается в подсчете пар одинаковых элементов, стоящих рядом в массиве.
  2. Код начинается с объявления функции numOfPairs, которая принимает два аргумента: указатель на массив и размер этого массива. Функция использует цикл for для прохода по всем элементам массива, кроме первого. Если текущий элемент равен предыдущему, увеличивается счетчик пар.
  3. В функции main генерируется случайное значение для каждого элемента массива fArr с помощью функции rand(). Значения выводятся на экран с помощью цикла for.
  4. Затем вызывается функция numOfPairs для подсчета пар одинаковых элементов в массиве fArr.
  5. Подсчет пар в массиве sArr происходит аналогично, только функция numOfPairs вызывается без аргументов, а в качестве размера передается константа SIZE.
  6. В конце программы вызывается функция getch(), чтобы программа не закрылась сразу после вывода результатов.
  7. В конце программы вызывается функция free() для освобождения памяти, выделенной под массив fArr.
  8. Возвращаемое значение функции main равно 0, что означает успешное завершение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.917 из 5
Похожие ответы