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

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

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

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> вопрос по массивам
amebka
сообщение 13.03.2006 15:25
Сообщение #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 - 13.03.2006 18:40
 К началу страницы 
+ Ответить 
volvo
сообщение 13.03.2006 15:43
Сообщение #2


Гость






Цитата
Как думаете, почему?
Потому, что ты пытаешься задать размер массива через переменную, а должна быть - константа!
const n_max = 100;
var
i,k,s,n:integer;
a:array[1..n_max] of integer;
...
Дальше - без изменений...
 К началу страницы 
+ Ответить 
Гость
сообщение 13.03.2006 16:27
Сообщение #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 - 13.03.2006 18:40
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 13.03.2006 18:00
Сообщение #4


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

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

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


 for i:= 1 to n do

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

Пробелы.

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


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


Гость






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


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

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

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


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


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
amebka
сообщение 14.03.2006 9:49
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 14.03.2006 9:54
Сообщение #8


Гость






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

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

Почему - см. сообщение №2
 К началу страницы 
+ Ответить 
amebka
сообщение 14.03.2006 10:03
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 14.03.2006 10:07
Сообщение #10


Гость






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

k:=a(i) mod 2;
тоже не будет компилироваться. Ибо скобки не те... Квадратные нужны.
 К началу страницы 
+ Ответить 
amebka
сообщение 14.03.2006 12:12
Сообщение #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 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 14.03.2006 12:27
Сообщение #12


Гуру
*****

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

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


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

1. Открыть pas-файл блокнотом.
2. Щелкнуть кнопку системного меню, если bp запущен в оконном режиме. Изменить -> Выделить -> Выделить программу -> Нажать enter -> Вставить сюда
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
amebka
сообщение 14.03.2006 15:22
Сообщение #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 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 14.03.2006 16:29
Сообщение #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 
 К началу страницы 
+ Ответить 
amebka
сообщение 14.03.2006 16:39
Сообщение #15


Новичок
*

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

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


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


Гуру
*****

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

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


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

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


Новичок
*

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

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


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

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

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


Гуру
*****

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

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


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

Возможно
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
amebka
сообщение 14.03.2006 17:05
Сообщение #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 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 14.03.2006 17:07
Сообщение #20


Гуру
*****

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

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


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

Не вводим!

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


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

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

 

- Текстовая версия 22.07.2025 9:38
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"