Сосчитать пары рядом стоящих одинаковых элементов массива - C (СИ) (78259)
Формулировка задачи:
Есть 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> 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++; } }
Объяснение кода листинга программы
В данном коде представлены две функции, которые выполняют подсчет пар одинаковых элементов в массиве.
- Функция i_print_pair(int arr, const int size, const char fmt) - выполняет подсчет пар одинаковых элементов в индексированном массиве.
Принимает три аргумента:
- arr - указатель на первый элемент массива
- size - размер массива
- fmt - строка формата для вывода пар элементов В функции используется цикл for, который проходит по всем элементам массива, начиная с 0 и до size - 1. Если текущий элемент массива arr[i] равен следующему элементу arr[i + 1], то с помощью функции printf выводится пара элементов в заданном формате.
- Функция 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 для подсчета пар одинаковых элементов в массиве.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д