Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2010, 18:13   #1
qwerty98765
Пользователь
 
Регистрация: 10.04.2010
Сообщений: 10
Злость "меню" одномерный массив процедуры

Код:
program massiv;
Type //раздел типов//
Mas=Array [1..20] Of Integer;
Var T:Mas;
N,s, w: Integer;
flag:byte;

Procedure Vvod(var Nmas: Integer; Var A: Mas);    //ввод//
          Var I: Integer;
          begin
          Flag:=1;
          WriteLn('Укажите кол-во элементов массива');
          ReadLn(Nmas);
          WriteLn('Введите элементы массива');
          For I:=1 To Nmas Do
          Read(A[I]);
          end;
          
Procedure gen(Nmas:Integer; var A:Mas);  //генерация случайного массива//
var z, I:integer;
begin
Flag:=1;
WriteLn('Массив не был введен с клавиатуры, он будет сгенерирован автоматически - укажите кол-во элементов массива');
ReadLn(Nmas);
randomize;
for z:=1 to nmas do
A[z]:=random(200)-100;
WriteLn('Выведем элементы массива в стоку');
For I:=1 To Nmas Do
Write(A[I]:5);
WriteLn;
end;
          
Procedure Vivod(Nmas:Integer; A:Mas);    //вывод//
Var I:Integer;
begin
if Flag=0 then  gen(N,T);
WriteLn('Выведем элементы массива в стоку');
For I:=1 To Nmas Do
Write(A[I]:5);
WriteLn;
end;

Procedure pervotric(Nmas:Integer; var A:Mas);       //первое отрицательное//
 var q, z:integer;
 begin
 if Flag=0 then  gen(N,T);
q:=0;
for z:=1 to Nmas do begin
                 if A[z] < 0 then begin
                                  q:=z; //позиция первого отрицательного//
                                  break;
                                  end;
                 end;
Writeln('первый отрицательный эллемент в массиве ', A[z]);
WriteLn;
end;

Procedure summotric(Nmas:Integer; var A:Mas; var s:integer);        //поиск суммы отрицательных эллементов//
var  z:integer;
begin
if Flag=0 then  gen(N,T);
S:=0;
for z:=1 to Nmas do begin
                 if A[z] < 0 then  S:=S+A[z];
                    end;
Writeln('cумма отрицательных эллементов в массиве ', S);
WriteLn;
end;

Procedure zamena(Nmas:Integer; var A:Mas);          //замена всех эллементов до первого отрицательного на сумма всех отрицательных//
var q, s, z:integer;
begin
if Flag=0 then  gen(N,T);
q:=0;
s:=0;
for z:=1 to Nmas do begin
                 if A[z] < 0 then begin
                                  q:=z; //позиция первого отрицательного//
                                  break;
                                  end;
                 end;
for z:=1 to Nmas do begin
                 if A[z] < 0 then  S:=S+A[z];   ///gjbcr cevvs jnhbhbwfntkmys[/
                    end;
for z:=1 to (q-1) do  A[z]:=s;        ////заменили))//
Vivod(N,T);
WriteLn;
end;

begin
repeat
writeln('1- ввести массив');
writeln('2-вывести массив в строку');
writeln('3-вывести первый отрицательный эллемент');
writeln('4-вывести сумму отрицательных эллементов');
writeln('5-заменить все эллементы стоящие до первого отрицательного на сумму всех отрицательных');
writeln('6-выход');
readln(w);
case w of
1:Vvod(N,T);                   //реализация вода//
2: Vivod(N,T);                  //реализация вывода в строку))//
3:pervotric(N,T);              //вывод первого отрицтельного//
4:summotric(N,T,s);                    //вывод суммы отрицательных эллементов//
5:zamena(N,T);                    //замена элементов//
6:exit;
else writeln('ошибка ввода');
end;
until false;
end.


накропала вот такую программу, с массивом введеным с клавиатуы работает нормально, а вот с генерировавым - возникают проблемы, не могу найти в чем я косяк((

Последний раз редактировалось Stilet; 21.04.2010 в 08:46.
qwerty98765 вне форума Ответить с цитированием
Старый 19.04.2010, 19:45   #2
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Код:
program massiv;
Type //раздел типов//
Mas=Array [1..20] Of Integer;
Var T:Mas;
N,s, w: Integer;
flag:byte;

Procedure Vvod(var Nmas: Integer; Var A: Mas); //ввод//
Var z: Integer;
begin
Flag:=1;
WriteLn('Укажите кол-во элементов массива');
ReadLn(Nmas);
WriteLn('Введите элементы массива');
For z:=1 To Nmas Do
Read(A[z]);
end;

Procedure gen(Var Nmas:Integer; var A:Mas); //генерация случайного массива//
var z, I:integer;
begin
Flag:=1;
WriteLn('Массив не был введен с клавиатуры, он будет сгенерирован автоматически - укажите кол-во элементов массива');
ReadLn(Nmas);
randomize;
for z:=1 to nmas do
A[z]:=random(200)-100;
WriteLn('Выведем элементы массива в стоку');
For z:=1 To Nmas Do
Write(A[z]:5);
WriteLn;
end;

Procedure Vivod(Nmas:Integer; A:Mas); //вывод//
Var z:Integer;
begin
if Flag=0 then gen(N,T);
WriteLn('Выведем элементы массива в стоку');
For z:=1 To Nmas Do
Write(A[z]:5);
WriteLn;
end;

Procedure pervotric(Nmas:Integer; var A:Mas); //первое отрицательное//
var q, z,i:integer;
begin
if Flag=0 then gen(N,T);
{q:=0;}
for z:=1 to Nmas do begin
if A[z]<0 then begin

{q:=z;} //позиция первого отрицательного//
break;
end
end;
 Writeln('первый отрицательный эллемент в массиве ', a[z]);
WriteLn;
end;

Procedure summotric(Nmas:Integer; var A:Mas; var s:integer); //поиск суммы отрицательных эллементов//
var z:integer;
begin
if Flag=0 then gen(N,T);
S:=0;
for z:=1 to Nmas do begin
if A[z]<0 then
S:=S+A[z];
{else
break;}
end;
Writeln('cумма отрицательных эллементов в массиве ', S);
WriteLn;
end;

Procedure zamena(Nmas:Integer; var A:Mas); //замена всех эллементов до первого отрицательного на сумма всех отрицательных//
var q, s, z:integer;
begin
if Flag=0 then gen(N,T);
q:=0;
s:=0;
for z:=1 to Nmas do begin
if A[z]<0 then begin
q:=z; //позиция первого отрицательного//
break;
end;
end;
for z:=1 to Nmas do begin
if A[z] < 0 then S:=S+A[z]; ///gjbcr cevvs jnhbhbwfntkmys[/
end;
for z:=1 to (q-1) do A[z]:=s; ////заменили))//
Vivod(N,T);
WriteLn;
end;

begin
repeat
writeln('1- ввести массив');
writeln('2-вывести массив в строку');
writeln('3-вывести первый отрицательный эллемент');
writeln('4-вывести сумму отрицательных эллементов');
writeln('5-заменить все эллементы стоящие до первого отрицательного на сумму всех отрицательных');
writeln('6-выход');
readln(w);
case w of
1:Vvod(N,T); //реализация вода//
2: Vivod(N,T); //реализация вывода в строку))//
3: pervotric(N,T); //вывод первого отрицтельного//
4:summotric(N,T,s); //вывод суммы отрицательных эллементов//
5:zamena(N,T); //замена элементов//
6:exit;
else writeln('ошибка ввода');
end;
until false;
end.
Вот исправил основные ошибки.Проверяй.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 19.04.2010, 20:00   #3
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Код:
Procedure pervotric(Nmas:Integer; var A:Mas); //первое отрицательное//
var q, z,i:integer;
begin
if Flag=0 then gen(N,T);
{q:=0;}
for z:=1 to Nmas do begin
if (A[z]<0) then begin
Write('первый отрицательный эллемент в массиве ', a[z]);
{q:=a[z];} //позиция первого отрицательного//
break;
end
end;
end;
Здесь накосячил.Исправьте.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 19.04.2010, 20:12   #4
qwerty98765
Пользователь
 
Регистрация: 10.04.2010
Сообщений: 10
По умолчанию

некорректно работает все равно(((
после генерации не выполняет пункт меню, а снова выводит все врайтелены основной программы 5 пункт на ссгенерированом массиве снова не выполняет(
qwerty98765 вне форума Ответить с цитированием
Старый 19.04.2010, 20:21   #5
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Ну а чё надо то.Сгенерировал массив.Он вывод запрос что вам далее необходимо:
Код:
writeln('3-вывести первый отрицательный эллемент');
writeln('4-вывести сумму отрицательных эллементов');
writeln('5-заменить все эллементы стоящие до первого отрицательного на сумму всех отрицательных');
Выбираете пункт меню и он всё делает что необходимо.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 19.04.2010, 20:26   #6
qwerty98765
Пользователь
 
Регистрация: 10.04.2010
Сообщений: 10
По умолчанию

ну он как бы должен генерироват ьего уже после выбора пункта...соответственно сразу после генерации выполнять действие у меня в коде было так...только работало некорректно
qwerty98765 вне форума Ответить с цитированием
Старый 19.04.2010, 20:35   #7
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Погоди структура программы ведь твоя.Я исправил только чёткое нахождение отрицательного,сумму отрицательных и замену(чтобы работало всё корректно).
У вас она так построена: в случае если программа не видит что массив создан при помощи ручного ввода,то она генерирует числа выводит массив на экран и выполняет с ним действия заданные пользователем.Так?Так.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 19.04.2010, 20:44   #8
qwerty98765
Пользователь
 
Регистрация: 10.04.2010
Сообщений: 10
По умолчанию

спасибо, значит посижу поразбираюсь еще
qwerty98765 вне форума Ответить с цитированием
Старый 19.04.2010, 20:47   #9
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Если помог оставь отзыв.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 21.04.2010, 06:24   #10
qwerty98765
Пользователь
 
Регистрация: 10.04.2010
Сообщений: 10
По умолчанию

да очень помогли, спасибо большое, еще немного подкорректировала и все ок)
qwerty98765 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
"ОКРВВЕРХ", "ОКР", "ЕСЛИ". Как бы их связать. Каравай Microsoft Office Excel 13 17.02.2010 09:53
Как обрубить все "ненужные" клавиши в меню программы. Ветас Паскаль, Turbo Pascal, PascalABC.NET 6 26.10.2009 18:01
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Динамическое создание "суб-меню" из файлов в заданном каталоге Abhorrer Общие вопросы Delphi 5 14.03.2009 21:47