Как устранить эту ошибку компиляции
Вам был дан целочисленный массив A размера N. каждый элемент массива находится в диапазоне от 1 до 10^5. Вам нужно найти частоту каждого отдельного элемента массива. Элементы должны присутствовать в выходных данных в порядке возрастания. Вам нужно вывести значение, а затем частоту каждого отдельного элемента.
->I am getting this error Command failed: ./a.out <input2.txt Segmentation fault
Что я уже пробовал:
#include <iostream> using namespace std; void InsertionSort(int *arr,int n){ int key,j=0; for(int i=1;i<n;i++){ key = arr[i]; j = i-1; while(j>=0 && key <arr[j]){ arr[j+1] = arr[j]; j = j-1; } arr[j+1] = key; } } void FrequencyAndPrint(int *arr,int n){ int temp; int freq ; int j=0; for(int i=0;i<n;i++){ temp = arr[i]; freq = 1; for( j=i+1;j<n;j++){ if(temp == arr[j]) ++freq; else break; } i = j-1; cout<<arr[i]<<" "<<freq<<endl; } return; } int main() { int N; int arr[10]; cin>>N; for(int i=0;i<N;i++){ cin>>arr[i]; } InsertionSort(arr,N); FrequencyAndPrint(arr,N); return 0; }
Mohibur Rashid
вы пробовали делать отладку? Ваше целое число имеет фиксированную длину; Если ваше N>10, то вы получите ошибку сегментации. И если вы пытаетесь реализовать сортировку вставки, вы делаете это неправильно.
С помощью insertion short вы сортируете во время вставки, то есть когда ваш цикл for читает, вы делаете сортировку
gogobaba
да, я пробовал отлаживать.Не могли бы вы пояснить, почему сортировка вставки неправильна в этой ситуации?
CHill60
Мохибур Рашид не будет знать, что вы ответили на их комментарий, потому что вы не использовали ссылку "ответить"