Другие языки программирования и технологии

Помогите, пожалуйста, исправить ошибку в коде С++!!

Я написала код, для замены всех нулевых элементов в массиве на единицы. Но, компилятор выдает такую ошибку "error: use of parameter outside function body before ‘]’ token
int ABC(const int h,int D[h])
^".Не могли бы вы помочь с исправлением данной ошибки, буду очень благодарна за помощь))))
Вот сам код (я написала сюда библиотеки в "",потому что их не было видно) :
int ABC(const int h,int D[h])
{
int h;
for(h=0;h<4;h++)
{
int D[h],k=0,max=0;
while (D[h+k]) k++;
h == k;
if (k > max) max = k;
}
return 0;
}
#include "iostream"
#include "stdio.h"
int main()
{
int A[4]={0,1,2,3};
int B[4]={4,3,2,1};
int C[4]={0,0,10,0};
int i,j,k;
for(i=0;i<4;i++)
{
A[i];
ABC(i,A[i]);
}
for(j=0;j<4;j++)
{
B[j];
ABC(i,B[j]);
}
for(k=0;k<4;k++)
{
C[k];
ABC(i,C[k]);
}
printf ("%d",A[i]);
printf ("\n%d",B[j]);
printf ("\n%d",C[k]);
return 0;
}
Алишер T
Алишер T
171
Ты бы лучше подробно написала условие задачи. Что-то твоя программа мало соответствует тому, что ты написала.

#include "iostream"
using namespace std;
void ch(int *a,int n){for(int i=0;i< n;i++)if(!a[i])a[i]=1;}
int main(){
int c[]={0,0,10,0}, n=sizeof c/sizeof *c; // в n будет длина массива
for(int i=0;i< n;i++)cout<< c[i]<<' '; cout<< endl;
ch(c,n);
for(int i=0;i< n;i++)cout<< c[i]<<' '; cout<< endl; cin.get();}
РР
Русланчик Руслан
55 627
Лучший ответ
// C++17
#include <iostream>
using namespace std;
using box_t = pair<int*, const size_t>;
void replace(const box_t& box, const int dest, const int src) {
auto[beg, end] = box;
for (auto i = 0U; i < end; ++i) if (beg[i] == dest) beg[i] = src;
}
void show(const box_t& box) {
auto[beg, end] = box;
for (auto i = 0U; i < end; ++i) cout << ' ' << beg[i];
cout.put('\n');
}
int main() {
int a[] = { 0, 2, 4, 0, 3, 7, 0 };
const box_t box = { a, size(a) };
show(box);
replace(box, 0, 1);
show(box);
system("pause");
}
Олег Смотриков
Олег Смотриков
61 495
Так нельзя
int ABC(int h, int* D)

И вообще - если ты передаешь через параметр размер массива, то его лучше не трогать - т. е. не менять внутри функции
SD
Sergei Drozdov
84 349
+ ты переопределяешь h!!! обрати внивание тк то h которое ты посылаешь в фуункцию не будет использоваться! Перезапиши
int h;
for(h=0;h<4;h++)
на
for(int h=0;h<4;h++)
тогда h-внутри счетика не перекроет то что посылается в функцию