MUruZ MU Online Forum

MUruZ MU Online Forum (http://muruz.ru/forum/index.php)
-   Общий (http://muruz.ru/forum/forumdisplay.php?f=13)
-   -   кто в прогамировании шарит? (http://muruz.ru/forum/showthread.php?t=17456)

xxalexx 22.02.2010 20:32

можете написать прогу мне чисто код

вычислить сумму четных элементов одномерного массива до первого встречного нулевого элемента

ПыСы паскаль

Gaury Gabriev 22.02.2010 20:34

Сорь, онли С++

seregkaz 22.02.2010 20:41

джава максимум, паскаль это что на 1 курсе?

ChixHunter 22.02.2010 20:45

uses crt;
var a:array[1..100] of real;
i,j,n,ti1,ti2:integer;
sum,min,max,x,p:real;
begin
ClrScr;
Randomize;
Write('n=');
Readln(n);
for i:=1 to n do
begin
a[i]:=-10+random(20);
Write(a[i]:0:1,' ');
end;
sum:=0;
for i:=1 to n do
if a[i]>0 then
sum:=sum+a[i];
min:=a[1];
max:=1;
for i:=1 to n do
if abs(a[i])<min then
begin
min:=abs(a[i]);
ti1:=i;
end;
for i:=1 to n do
if abs(a[i])>max then
begin
max:=abs(a[i]);
ti2:=i;
end;
Writeln;
Writeln('Min=',min:0:1,' [',ti1,']');
Writeln('Max=',max:0:1,' [',ti2,']');
p:=1;
for i:=ti1+1 to ti2-1 do
p:=p*a[i];
Writeln;
Writeln('Sum=',sum:0:1);
Writeln('P=',p:0:1);
for i:=1 to n do
for j:=i to n do
if a[i]<a[j] then
begin
x:=a[i];
a[i]:=a[j];
a[j]:=x;
end;
for i:=1 to n do
Write(a[i]:0:1,' ');
Readln;
end.

Вроде без ошибок..

xxalexx 22.02.2010 21:05

ChixHunter чет длинная у меня намного короче получилась вот только паскаль зависает при включении :-D

а без штук
вот моя на скрине не добавлен writуln а так все также и не рабoтает while убераешь работает токо все складывает а не до первого 0
http://s56.radikal.ru/i153/1002/29/f01173db2a2b.jpg


у меня первая (ни та что на скрине) с заранее известным размером массива и случ числами от 100 до 300 работает а это блин нет

Microsoft 22.02.2010 21:13

Если чисто алгоритм, то все просто:

...
Summ := 0;
for i := 0 to MAX do begin
__if SomeArray[i] = 0 then Break;
__if Function(SomeArray[i]) then Summ := Summ + SomeArray[i];
end;
...

MAX - длина массива
SomeArray - сам массив
Function - булевая функция, которая возвращает true в случае если число четное (просто забыл название этой функции)
Summ - сумма

xxalexx 22.02.2010 21:18

n mod 2=0 это проверяет четность

Microsoft 22.02.2010 21:21

Цитата:

n mod 2=0 это проверяет четность
[/b]
Ну тогда
__if (SomeArray[i] mod 2 = 0) then Summ := Summ + SomeArray[i];

А на чистом паскале никогда не писал, поэтому полностью программу составить не смогу :(

xxalexx 22.02.2010 21:22

Microsoft так всегда 0 если if SomeArray[i] = 0 then Break; рандом стоит от -10 до 10 но почему всегда сразу в 0 хз

Microsoft 22.02.2010 21:26

Цитата:

Microsoft так всегда 0 если if SomeArray[i] = 0 then Break; рандом стоит от -10 до 10 но почу всегда сразу в 0 хз
[/b]
Попробуй потестить без рандома. Например, для теста заполни весь массив единицами.

xxalexx 22.02.2010 21:27

http://s002.radikal.ru/i197/1002/03/bbd9e73638a5.jpg


щас попробую с рандомом от 1 до 20


пипець с рандомом от 1 до 20 тоже в ноль где-то 30% идет

Microsoft 22.02.2010 21:30

Убери ";" после Break.

xxalexx 22.02.2010 21:32

а в принципе можно ли рандом поставить a[i]:=10-Random(20); можно вместо + поставить - тогда 30% нормальных ответов?

Цитата:

Убери ";" после Break.
[/b]
ругается тогда :D и не работает

короче работает с рандомом и от -10+Random(20) попробую масивчик побольше забульбенить

Microsoft 22.02.2010 21:34

Да просто random(20). Это от 0 до 19. Или тебе обязательно отрицательные числа нужны?

Цитата:

ругается тогда и не работает[/b]
Просто у меня такое ощущение что If A[i] mod 2 = 0 и т.д. в тело цикла for уже не входит :)

xxalexx 22.02.2010 21:38

ну в принципе и так можно чтоб не гемороится

Microsoft 22.02.2010 21:39

+ Массив у тебя 1..21, а циклы 1..20. Константы рулят :)

xxalexx 22.02.2010 21:42

сделал масив 1-500 циклы 1-500 рандом 1-500 и в 0 часто блин чеж паскаль так любит ноль первым ставить ггг

Microsoft 22.02.2010 21:45

Попробуй
for i := 1 to 21 do if a[i] = 0 then break else if (a[i] mod 2) = 0 then s := s + a[i];

xxalexx 22.02.2010 21:48

эх ладно путь так завтра добавлю работу с файлами в прогу и нормуль

еще одна осталась не подскажешь?

Составьте программу, облегчающую работу секретаря школы. Напишите прорамму, которая ведет поиск номера телефона по введенной фамилии

на сколько я понял надо 2 массива, массив фамилии string, номера телефонов integer
базу заранее надо написать в тхт фамилии в одном номера в другом и как их писать в столбик через энтр?
потом в проге открыть оба или 1 тхт
var
f: text;
s: string;
begin
assign(f,'filename');
reset(f);
readln(f,s);
close(f);
end;
код работы с файлами


и я вот одного не пойму как они связываться будут?

Microsoft 22.02.2010 21:52

В чистом паскале можно определять структуры, как в object паскале?

ЗЫ:

type
__MyStruct = record
____a, b: integer;
____c: string;
__end;

xxalexx 22.02.2010 21:57

MyStruct = record ммм а че это??? рекорд что делает?

Microsoft 22.02.2010 21:58

Цитата:

MyStruct = record ммм а че это??? рекорд что делает?
[/b]
Понятно :)

Пойду почитаю про паскаль, завтра постараюсь выложить.

xxalexx 22.02.2010 22:01

мм мне через массивы надо все это провернуть

razor 22.02.2010 22:29

ппц скока проггеров сразу нашлось, может мне кто с веб-дизайном поможет, коль на то пошло?)

xxalexx 22.02.2010 22:36

Цитата:

ппц скока проггеров сразу нашлось, может мне кто с веб-дизайном поможет, коль на то пошло?)
[/b]
как токо с прогами разберусь глаза вылечу помогу если успею а тут нас много тебе фотошоп или сам HTML

Microsoft 22.02.2010 22:48

Примерно так. Подчеркивание - это пробелы, привычка :)

program Test;

const
__MAXSIZE = 100;
__DATAFILE = 'Data.txt'; // не помню, нужно ли указывать полный путь

var
__Data: text;
__Name: array[1..MAXSIZE] of string;
__Phone: array[1..MAXSIZE] of string;
__i: integer;
__s: string;

begin

for i := 1 to MAXSIZE do begin
__Name[i] := '';
__Phone[i] := '';
end;

Assign(Data, DATAFILE);
Reset(Data);

for i := 1 to MAXSIZE do begin
__if not EOF(Data) then ReadLn(Data, Name[i]) else Break;
__if not EOF(Data) then ReadLn(Data, Phone[i]) else Break;
end;

Close(Data);

while true do begin // Бесконечный цикл

__Write('Введите фамилию: ');
__Read(s);

__if s = 'q' then Break; // Выходим из проги как всегда через жо... через "q" :)

__for i := 1 to MAXSIZE do begin
____if Name[i] = s then begin
______WriteLn(' Номер телефона: ', Phone[i]);
______Break;
____end;
__end;

end;

WriteLn('Спасибо что обратились в нашу контору :)');

end.


Вот наша Data.txt:
Иванов
111-11-11
Петров
222-22-22
Сидоров
333-33-33
Дятлов
656-56-56
Трофимов
233-33-33
Петросян
545-54-54


Если не ошибаюсь, в конце файла обязательно должна быть пустая строка.

xxalexx 22.02.2010 23:33

огромное спс завтра попробую

bandit 23.02.2010 02:07

8-) не согласился чтоб я за блесы тебе решил. :-P

да ты из аськи смылся

razor 23.02.2010 09:29

Цитата:

как токо с прогами разберусь глаза вылечу помогу если успею а тут нас много тебе фотошоп или сам HTML
[/b]
мне CSS) HTML и фотошоп знаю, ща же куча видеокурсов в инете)
Лан, может кто подскажет, как сделать резиновый дизайн, то бишь не зависящий от разрешения экрана) Я вот только знаю, что нужно соотношение в % стаить вместо пикселей и все) еще проблемы с <div>-тегами) вообщем не в этой теме...%)


Текущее время: 18:34. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.