IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> вопрос по массивам
сообщение
Сообщение #1


Гость






Задание:
Вводится размерность одномерного массива A(N) и его элементы. Вывести на экран сумму составных чисел среди элементов массива.
Вот программка:
Исходный код

var
i,k,s,n:integer;
a:array[1..n] of integer;
begin
readln(n);
i:=1;
s:=0;
for i = 1 to n do
begin k:=0;
k:=a(i)mod2;
if k=0 then goto m1
else k:=a(i)mod3;
if k=0 then goto m1
else k:=a(i)mod5;
if k=0 then goto m1
else k:=a(i)mod7;
if k=0 then goto m1;
m1: s:=s+a(i);
end;
writeln (s);
end.


Теги !

Но она даже не компилируется (в месте, отмеченном красным цветом)...
Как думаете, почему? и вообще, как она (программка)? действенная?

Сообщение отредактировано: klem4 -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
Как думаете, почему?
Потому, что ты пытаешься задать размер массива через переменную, а должна быть - константа!
const n_max = 100;
var
i,k,s,n:integer;
a:array[1..n_max] of integer;
...
Дальше - без изменений...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Спасибо большое) я бы и не догадалась...
Теперь он не компелирует в следующем месте...
Исходный код

const n_max=100;
var
i,k,s,n:integer;
a:array[1..n_max] of integer;
begin
readln(n);
i:=1;
s:=0;
for i = 1 to n do
begin k:=0;
k:=a[i]mod2;
if k=0 then goto m1
else k:=a[i]mod3;
if k=0 then goto m1
else k:=a[i]mod5;
if k=0 then goto m1
else k:=a[i]mod7;
if k=0 then goto m1;
m1: s:=s+a[i];
end;
writeln (s);
end.

Теги !

пишет, что там должна быть точка с запятой... (

Сообщение отредактировано: klem4 -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


 for i:= 1 to n do

двоеточие забыли
k:=a[i] mod 2;

Пробелы.

В следующий раз будет ругаться на m1...
а вообще лучше бы без goto обойтись...


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






klem4, ТЕГИ это прекрасно, но попробуй теперь прочесть обе эти программы!
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Хм действительно с pascоde какие-то проблемы тут ... codebox вроде нормально


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Женский
Реальное имя: Анна

Репутация: -  0  +


Спасибо большое ... программа скомпилировалась, но все равно не работает...
конечный вариант выглядит так...
 
var
i,k,s,n:integer;
a:array[1..n] of integer;
begin
readln(n);
i:=1; 
s:=0;
for i: = 1 to n do
begin k:=0;
k:=a(i) mod 2;
if k=0 then s:=s+a(i)
else k:=a(i) mod 3;
if k=0 then s:=s+a(i)
else k:=a(i) mod 5;
if k=0 then s:=s+a(i)
else k:=a(i) mod 7;
if k=0 then s:=s+a(i);
end;
writeln (s);
end.


Может, кто-нибудь сможет мне помочь? rolleyes.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Давай ты не будешь врать, ОК?
var
  i,k,s,n:integer;
  a:array[1..n] of integer;

Это - не будет компилироваться ни при каких условиях...

Почему - см. сообщение №2
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Женский
Реальное имя: Анна

Репутация: -  0  +


Цитата(volvo @ 14.03.2006 9:54) *
Это - не будет компилироваться ни при каких условиях...


Извиняюсь ... моя невнимательность wacko.gif
вроде так... (уже не уверена)...
 const n_max=100;
var
i,k,s,n:integer;
a:array[1..n_max] of integer;
begin
readln(n);
i:=1; 
s:=0;
for i: = 1 to n do
begin k:=0;
k:=a(i) mod 2;
if k=0 then s:=s+a(i)
else k:=a(i) mod 3;
if k=0 then s:=s+a(i)
else k:=a(i) mod 5;
if k=0 then s:=s+a(i)
else k:=a(i) mod 7;
if k=0 then s:=s+a(i);
end;
writeln (s);
end.


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Цитата
вроде так... (уже не уверена)...
Правильно, что не уверена... Откомпилируй программу, потом пришлешь полученный вариант... Компилятором работать, я думаю, ни у кого желания нет...

k:=a(i) mod 2;
тоже не будет компилироваться. Ибо скобки не те... Квадратные нужны.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Женский
Реальное имя: Анна

Репутация: -  0  +



const n_max=100;
var
i,k,s,n:integer;
a:array[1..n_max] of integer;
begin
readln(n);
i:=1; 
s:=0;
for i: = 1 to n do
begin k:=0;
k:=a[i] mod 2;
if k=0 then s:=s+a[i]
else k:=a[i] mod 3;
if k=0 then s:=s+a[i]
else k:=a[i] mod 5;
if k=0 then s:=s+a[i]
else k:=a[i] mod 7;
if k=0 then s:=s+a[i];
end;
writeln (s);
end.


Извиняюсь, конечно, за такое количество ошибок... просто я не умею ее из паскаля копировать (пришлось перебивать вручную, поэтому и ляпов столько)...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


for i: = 1 to n do
Это тоже не будет компилироваться. Между : и = пробел.
Цитата
просто я не умею ее из паскаля копировать

1. Открыть pas-файл блокнотом.
2. Щелкнуть кнопку системного меню, если bp запущен в оконном режиме. Изменить -> Выделить -> Выделить программу -> Нажать enter -> Вставить сюда
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Женский
Реальное имя: Анна

Репутация: -  0  +



const n_max=100;
var
i,k,s,n:integer;
a:array[1..n_max] of integer;
begin
readln(n);
i:=1; s:=0;
for i:=1 to n do
begin
k:=0;
k:=a[i] mod 2;
if k=0 then  s:=s+a[i]
else  k:=a[i] mod 3;
if k=0 then  s:=s+a[i]
else  k:=a[i] mod 5;
if k=0 then   s:=s+a[i]
else  k:=a[i] mod 7;
if k=0 then   s:=s+a[i];
end;
writeln (s);
end.


у меня она компилируется, но не работает... я не понимаю почему...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


amebka
Но мне проще написать заново, чем в чужом коде разбираться. rolleyes.gif

Функция isNotPrime взята из ФАК и переделана. Определяет составное число или нет
Const
  n=5;
var
  i,s : Integer;
  a: array [1..N] of Integer;

function isNotPrime(X: word): boolean;
  var  i: integer;
Begin
  isNotPrime:=true;
  for i:=2 to trunc(sqrt(x)) do
	if x mod i = 0 then Exit;
  isNotPrime:=false
End;

begin
  for i:=1 to N do
	readln(a[i]);
  s:=0;
  for i:=1 to N do
	if isNotPrime(a[i]) then
	  s:=s+a[i];
  Writeln('Summa = ',s);
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Женский
Реальное имя: Анна

Репутация: -  0  +


да... мне тоже в чужом коде тяжело разбираться.... ( и не работает он у меня что-то (( я ввожу числа массива и ничего не происходит.... (( может, я чего-то не понимаю???
после компиляции нажимаю ctrl+F9 ввожу числа... они вводятся и вводятся... как долго это должно продолжаться, когда массив всего из 5 чисел?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Вводишь одно число, затем Enter.
Так делала?

Сообщение отредактировано: Ozzя -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Женский
Реальное имя: Анна

Репутация: -  0  +


Цитата(Ozzя @ 14.03.2006 16:41) *

Вводишь одно число, затем Enter.
Так делала?

Спасибо, без Enter делала - через пробел... ща исправлюсь... а заодно и в своей программе покопаюсь... может заработает...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


через пробел - это в Basic'е.
Цитата
может заработает...

Возможно
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Женский
Реальное имя: Анна

Репутация: -  0  +


Нет, не заработала, хотя я и не понимаю, в чем дело dry.gif
вот программа:
 const n_max=100;
var
i,k,s,n:integer;
a:array[1..n_max] of integer;
begin
readln(n);
readln(a[i]);
i:=1; s:=0;
for i:=1 to n do
 begin
 k:=0;
 k:=a[i] mod 2;
 if k=0 then  s:=s+a[i]
		else  k:=a[i] mod 3;
			  if k=0 then  s:=s+a[i]
			  else  k:=a[i] mod 5;
					if k=0 then   s:=s+a[i]
						   else  k:=a[i] mod 7;
								 if k=0 then   s:=s+a[i];
 end;
writeln (s);
end.


Опишу, что моя программа должна была бы делать... хотя и не делает mega_chok.gif
Начиная с begin...
вводим размер массива (n), который не должен превышать 100
вводим данные в массив
начинается цикл от первого элемента массива до n-го
попадая в цикл кажый элемент проверяется на наличие остатка от деления на числа 2, 3, 5, 7 - это те числа, на которые могут делиться составные числа, кроме как на себя и единицу
если при каком-то из делений остаток (k) равен нулю (т.е. данный элемент массива делится на 2, 3, 5 или 7 без остатка), то к сумме (s), которая изначально равна нулю, прибавляется данный элемент массива
в конце должна вывестись сумма всех составных чисел данного массива...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Цитата
вводим данные в массив

Не вводим!

Код
for i:=1 to n <- забыла!
  readln(a[i]);


Сообщение отредактировано: Ozzя -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 22.04.2025 9:43
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name