Сосчитать пары рядом стоящих одинаковых элементов массива - C (СИ) (78245)
Формулировка задачи:
Есть 20-ти значный массив один с индексами второй с указателями, надо написать функцию для каждого массива которая будит выводит ответ на экран. Функция: сосчитать пары рядом стоящих одинаковых элементов, вывести количество пар на экран.. пример:
Одномерный массив из 20 элементов:
2 0 массив с указателями:
можете написать обе функции и вставить в код чтоб всё работало..
1 1
5 0 8 1 6 4 3 86 6
4 4
3 20 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; }
Объяснение кода листинга программы
- Предполагается, что задача заключается в подсчете пар одинаковых элементов, стоящих рядом в массиве.
- Код начинается с объявления функции
numOfPairs
, которая принимает два аргумента: указатель на массив и размер этого массива. Функция использует циклfor
для прохода по всем элементам массива, кроме первого. Если текущий элемент равен предыдущему, увеличивается счетчик пар. - В функции
main
генерируется случайное значение для каждого элемента массиваfArr
с помощью функцииrand()
. Значения выводятся на экран с помощью циклаfor
. - Затем вызывается функция
numOfPairs
для подсчета пар одинаковых элементов в массивеfArr
. - Подсчет пар в массиве
sArr
происходит аналогично, только функцияnumOfPairs
вызывается без аргументов, а в качестве размера передается константаSIZE
. - В конце программы вызывается функция
getch()
, чтобы программа не закрылась сразу после вывода результатов. - В конце программы вызывается функция
free()
для освобождения памяти, выделенной под массивfArr
. - Возвращаемое значение функции
main
равно 0, что означает успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д