#include <iostream>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
using namespace std;
int main(){
int i=0,n,h,k;
k = (int)pow(10,5);
int c[k];
scanf("%d%d",&n,&h);
if((n>=1 && n<=(int)pow(10,5)) && (h>=1 && h<=(int)pow(10,8))){
int arr[n];
do{
scanf("%d",&arr[i]);
if(arr[i] > h){
cout<<"Error !";
exit(1);
}
i++;
}while(i!=(n-1));
i=0;
do{ /*The fault occurs somewhere here, probably*/
scanf("%d",&c[i]);
i++;
}while(c[i]!=0);
if(i>(int)pow(10,5)){
cerr<<"Error !";
exit(0);
}
}
return 0;
}
Я пытаюсь принять несколько номеров из консоли на разных линиях, используя scanf() (с определенными ограничениями на верхние и нижние пределы чисел). Проблема в том, я получаю ошибку сегментации где-то там, где я поставил комментарий - я не могу понять, где происходит ошибка - может кто-то указать на ошибку, которую я сделал?Исправление ошибки сегментации
'к = (ИНТ) пау (10,5); int c [k]; 'Это недопустимо C++. Массивы в C++ должны иметь выражения времени компиляции для обозначения количества записей. – PaulMcKenzie
Что было бы правильным заявлением? – Monk
«Инструкция» заключается в использовании 'std :: vector c (k);' –
PaulMcKenzie