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

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

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

Есть 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>
void i_print_pair(int* arr, const int size, const char* fmt);
void p_print_pair(int* arr, int* end, const char* fmt);
 
int  main(void) {
  int arr[] = { 2, 0, 1, 1, 5, 0, 8, 1, 6, 4, 3, 8, 6, 6, 4, 4, 3, 2, 0, 0 };
 
   i_print_pair(arr, sizeof(arr)/sizeof(arr[0]), "%d %d\t");
   putchar('\n');
 
   p_print_pair(arr, arr + sizeof(arr)/sizeof(arr[0]), "%d %d\t");
   putchar('\n');
   getchar();
   return 0;
}
 
// индексированная
void i_print_pair(int* arr, const int size, const char* fmt) {
   int i;
   for(i = 0; i < size - 1; i++) {
        if(arr[i] == arr[i + 1]) 
          printf(fmt, arr[i], arr[i]);
   }
}
 
// указательная
void p_print_pair(int* arr, int* end, const char* fmt) {
   while(arr + 1 != end) {
       if( *arr ==  *(arr + 1)) 
            printf(fmt, *arr, *arr);
      *arr++;
   }
}

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

В данном коде представлены две функции, которые выполняют подсчет пар одинаковых элементов в массиве.

  1. Функция i_print_pair(int arr, const int size, const char fmt) - выполняет подсчет пар одинаковых элементов в индексированном массиве. Принимает три аргумента:
    • arr - указатель на первый элемент массива
    • size - размер массива
    • fmt - строка формата для вывода пар элементов В функции используется цикл for, который проходит по всем элементам массива, начиная с 0 и до size - 1. Если текущий элемент массива arr[i] равен следующему элементу arr[i + 1], то с помощью функции printf выводится пара элементов в заданном формате.
  2. Функция p_print_pair(int arr, int end, const char* fmt) - выполняет подсчет пар одинаковых элементов в указательном массиве. Принимает три аргумента:
    • arr - указатель на первый элемент массива
    • end - указатель на последний элемент массива
    • fmt - строка формата для вывода пар элементов В функции используется цикл while, который проходит по всем элементам массива, начиная с arr и до end - 1. Если текущий элемент массива arr равен следующему элементу (arr + 1), то с помощью функции printf выводится пара элементов в заданном формате. В функции main создается массив arr, который заполняется значениями. Затем вызываются функции i_print_pair и p_print_pair для подсчета пар одинаковых элементов в массиве.

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


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

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

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