#c #arrays
#c #массивы
Вопрос:
#include <iostream>
using namespace std;
int main() {
long long t;
long long * count= NULL;
count=new long long[t];
cin>>t;
while(t--){
long long n, i=0;
long long * p= NULL;
cin >> n;
int c=0;
p= new long long[n];
for (i=0; i<n; i )
{
cin >> p[i];
}
for (i=0; i<n; i ){
if(p[i]>=p[i 1]){
c ;
}
}
count[t]=c 1;
}
for(int i=0; i<t; i ){
std::cout<<count[i];
cout<<"n";
}
return 0;
}
// Это мой код, и жирная часть не печатает массив count, пожалуйста, кто-нибудь может указать на ошибку, выходит ли массив count за рамки? //
Комментарии:
1.
count=new long long[t];
какое значениеt
здесь??? И тогда какой размерcount
?2.
count=new long long[t];
вы сделали это до того, как спросили значениеt
3. Кстати, вы пропускаете назначенный буфер
p
. Хотя это может и не быть большой проблемой, потому что в задачах такого типа не будет слишком много ввода.
Ответ №1:
Вы не можете использовать значение переменной до того, как она получит значение.
count=new long long[t];
cin>>t;
должно быть
cin>>t;
count=new long long[t];
Вы сделали это правильно с p
и n
позже в коде.
Ответ №2:
Во-первых, вы сделали count=new long long[t];
это перед чтением значений t
. Это означает, что вы использовали неопределенное значение неинициализированного t
, что плохо. Эта строка должна быть после cin>>t;
и перед while
циклом.
Во-вторых, t
-1
когда while
цикл заканчивается, so i<t
станет false. Вы должны где-то сохранить номер.
Попробуйте это (при условии, что вы хотите распечатать результаты в порядке ввода):
#include <iostream>
using namespace std;
int main() {
long long t;
long long * count= NULL;
cin>>t;
count=new long long[t];
int count_idx = 0;
while(t--){
long long n, i=0;
long long * p= NULL;
cin >> n;
int c=0;
p= new long long[n];
for (i=0; i<n; i )
{
cin >> p[i];
}
for (i=0; i<n; i ){
if(p[i]>=p[i 1]){
c ;
}
}
count[count_idx ]=c 1;
}
for(int i=0; i<count_idx; i ){
std::cout<<count[i];
cout<<"n";
}
return 0;
}
В этом коде count_idx
используется для сохранения того, куда записывать результаты, чтобы сохранить порядок, и он будет содержать количество данных, сохраненных в конце while
цикла.
Также я исправил отступ.
Комментарии:
1. Большое спасибо! Действительно помогло!