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

Для чего нужно SIZE, Sizeof и как этим пользоваться? С++

Задача такая:
Составить подпрограмму
определения числа одинаковых целых чисел k в серии длиной больше L в одномерном массиве X = (х1,
х2, ..хn). Используя ее, найти серию s максимальной длины в массиве Х = [1, 0, 0, 0, 1, 1,
1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1].

Здесь вроде как нужно использовать size.

Поможете? Программу написал без size и выдает не совсем то, что надо.

Вот программа:


#include <iostream.h>

int main()

{ const int r= 19;

char X[r] = { 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1 };

int i, L, S1= 0, S0= 0;

for(i=0; i< r;)

{

L= 0;

while( X[i]== 0)

{ L++;

i++;}

if(L > S0)

S0= L;

L= 0;

while(X[i]== 1)

{ L++;

i++;}

if(L > S1 )

S1= L;

}

cout<< "S1"<< S1<<endl;

cout<< "S0"<< S0<<endl;

return 0;

}
Выдает 5, 3
AJ
Alexey J
166
Результат оператора sizeof имеет тип size_t, целочисленный тип, определенный во включаемом файле stddef.h. Он позволяет избежать жесткого прописывания размеров данных, которые часто зависят от платформы. Например:
int x[] = { 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1 }; // размер массива не задан явно
size_t size = sizeof(x) / sizeof(int); // здесь размер вычисляется
for (int i = 0; i < size; ++i) cout << x[i]; // здесь используется
ТC
Тимур C
89 566
Лучший ответ
Alexey J то есть все таки size здесь не нужен? если нет, то тогда в чем ошибка?
Чо за SIZE я хз. sizeof возвращает значение типа size_t число байт, которое требуется в памяти переменной типа переданного аргументом. Каким макаром можно sizeof применить к твоей задаче - ума не приложу, ты, скорее всего, не туда смотришь.
Что бы определить размер (в байтах) переменной.
====================
#include <iostream>
using namespace std;

int main(){

int X[] = {1, 0, 0, 0, 1, 1,
1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1};
int s,k,counter,max,size;
max = 0;
counter = 1;

size = sizeof(X)/sizeof(int);

for(int i(1); i < size; i++){
if(X[i] == X[i-1]) counter++;
else counter = 1;
if(counter > max) { max = counter; k = X[i]; }
}

for(int i(1); i < size; i++) cout << X[i] << ' ';
cout << endl;
cout << "k = " << k << endl;
cout << "max = " << max << endl;

system("pause > nul");
return 0;
}
Ваня Малафеев
Ваня Малафеев
5 430

Похожие вопросы