ОБРАБОТКА И МОДИФИКАЦИЯ ОДНОМЕРНЫХ ЧИСЛОВЫХ МАССИВОВ
" Дана последовательность не более 30 ненулевых целых
чисел, последним числом в последовательности является 0. Вве-
дите последовательность в одномерный массив. Ис-
пользование дополнительных массивов запрещено."
задача легкая, но...нужно сформировать такой массив, чтоб при вводе пользователем нулевого элемента массив автоматически завершался....и ещё одно ограничение, о котором я к сожалению сейчас забыла :(
ВОБЩЕМ, ваши варианты этой задачки? =)
1. Элементы длжны вводиться сразу или последовательно(т.е. ввел один символ-число занеслось в массив)?
2. На каком языке нужна программа (впредь старайся всегда это указывать)
2. сори:rolleyes: Pascal
Ну как-так и не вспомнила?
Ну, из тех данных что ты мне дала я набросал примерно следуещее:
var i:integer; a:array[1..30]; f:byte;
begin
i:=1
while i<>0 do begin
readln(i);
f:=f+1;
a[f]:=i
end
end;
Программа конечно наипростейшая, хотя может быть если бы не твоя "девичья память" она могла быть и потруднее. Наверное недавно Pascal занялась?
Ну, из тех данных что ты мне дала я набросал примерно следуещее:
var i:integer; a:array[1..30]; f:byte;
begin
i:=1
while i<>0 do begin
readln(i);
f:=f+1;
a[f]:=i
end
end;
Программа конечно наипростейшая, хотя может быть если бы не твоя "девичья память" она могла быть и потруднее. Наверное недавно Pascal занялась?
А те не кажется что цикл должен быть с постусловием?!!
1)выход из цикла основан только на введенных юзером числом, а если он умный сто цифр захочет ввести? прога вылетит.
2)помоему размер массива должен быть 31, но это несущественно.
int i, a[31]={0};
short f = 0;
while( f < 30 )
{
scanf("%d", &i);
if(i == 0) break;
a[f++] = i;
}
1)выход из цикла основан только на введенных юзером числом, а если он умный сто цифр захочет ввести? прога вылетит.
2)помоему размер массива должен быть 31, но это несущественно.
int i, a[31]={0};
short f = 0;
while( f < 30 )
{
scanf("%d", &i);
if(i == 0) break;
a[f++] = i;
}
Тогда уж можно и так:):
int i, a[30]={0};
for (short f = 0; f < (30 - 1); f++)
{scanf("%i", &i);
if (i == 0) break;
a[f] = i;
}
разницы не вижу =)
А какая разница?
и то верно, просчет, но можно и так:
var i:integer; a:array[1..30]; f,k:byte;
begin
repeat
readln(i);
k:=k+1;
f:=f+1;
a[f]:=i
until ((i=0) or (k=30));
end;
int i, a[30]={0};
for (short f = 0; f < (30 - 1); f++)
{scanf("%i", &i);
if (i == 0) break;
a[f] = i;
}
Текст не Pascal, наверное C да? Клянусь никогда в жизни не видел кода С (во я древний да?).
очень =), кстати язык я написала, действительно С.
а я Паскаль, если бы не форум, ещё долго б не увидела.
разницы не вижу =)
Я ж не говорил, что разница есть!! Просто альтернатива!!
Никакой разницы!!:) Просто грамотнее, чем брать значение 1 неизвестно откуда!!;)
Наверное ты прав.:) Просто у меня мания ставить флажки, счетчики и другую ерунду куда ни попадя. (бывало даже так, что букв на клавиатуре не хватало - все на счетчики пораздавал).
1.Ну как-так и не вспомнила?
2.Наверное недавно Pascal занялась?
1.ну раз вы не употребили этого условия, которое нельзя использовать, то и вспоминать не нужно =)
2. ну вобщем да)
последнее вроде правильно...пасибачки)) может, потом ещё вопросы возникнут или дополнения....