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

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

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

 
 Ответить  Открыть новую тему 
> Двумерные массивы:сумма цифр чисел..., думала,писала,но совсем запуталась :(
Jane
сообщение 19.12.2004 0:53
Сообщение #1





Группа: Пользователи
Сообщений: 9
Пол: Женский

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


Помогите,появуста,решить задачу-не могу сдать зачёт!!!
:molitva:
"Дана последовательность не более 30 ненулевых целых
чисел, последним числом в последовательности является 0. Вве-
дите последовательность в одномерный массив и напечатайте в порядке возрастания элементы, сумма цифр в которых находится в интервале от А до В. Использование дополнительных массивов запрещено."
unsure.gif
Jane@tlt.ru

Сообщение отредактировано: Jane - 19.12.2004 0:54


Прикрепленные файлы
Прикрепленный файл  LAB2_1.PAS ( 755 байт ) Кол-во скачиваний: 168
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 19.12.2004 1:17
Сообщение #2


Гость






Jane
А если так:
Код

Program Lab2_1;
 var C:array[1..30] of integer;
 var i,j,n:integer;
     A,B,S:integer;
     x, T: integer;
begin
 writeln('vvedite granitci intervala:');
 write('A='); readln(A);
 write('B='); readln(B);

 n := 0; i := 1;
 repeat
   write('vvedite element massiva C[',i,']=');
   readln(x); i := i + 1;
   if x > 0 then
     begin
       s := 0; T := x;
       while T > 0 do
         begin
           s := s + (T mod 10);
           T := T div 10;
         end;
       if (s > A) and (s < B) then
         begin
           n := n + 1; C[n] := x
         end;
     end
 until x = 0;

 for i:=1 to n-1 do
   for j:=i+1 to n do
     if c[i]>c[j] then begin
        T:=c[i]; c[i]:=c[j]; c[j]:=T
     end;

 for i:=1 to n do
   writeln(c[i]);
end.


Сообщение отредактировано: volvo - 19.12.2004 14:50
 К началу страницы 
+ Ответить 
Jane
сообщение 19.12.2004 14:32
Сообщение #3





Группа: Пользователи
Сообщений: 9
Пол: Женский

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


volvo
Большое спасибо,только в этом месте с индексами что-то странное...:

n := 0;
repeat
write('vvedite element massiva C[',n+1,']=');
readln(x);
mellow.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 19.12.2004 14:38
Сообщение #4


Гость






Jane
Почему странное? Все в порядке... smile.gif Я же вначале N присвоил 0, вот чтобы у тебя не выдавалось сообщение 'vvedite element massiva C[0]=', я и вывожу n+1
 К началу страницы 
+ Ответить 
Jane
сообщение 19.12.2004 14:46
Сообщение #5





Группа: Пользователи
Сообщений: 9
Пол: Женский

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


volvo
Ну...а вместо этого выдаётся C[1]=
C[1]=
C[1]=
ну и т.д..... huh.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 19.12.2004 14:53
Сообщение #6


Гость






Jane
Посмотри теперь - я подправил. Просто в моей версии число ВООБЩЕ не заносится в массив, если сумма его цифр не попадает в заданный интервал [A .. B]. Сейчас я просто добавил счетчик введенных чисел...
 К началу страницы 
+ Ответить 
Jane
сообщение 20.12.2004 2:29
Сообщение #7





Группа: Пользователи
Сообщений: 9
Пол: Женский

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


volvo
:thanks:
Да!!!Теперь всё получается!!!ОГРОМНОЕ СПАСИБО!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Jane
сообщение 22.12.2004 12:56
Сообщение #8





Группа: Пользователи
Сообщений: 9
Пол: Женский

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


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

Можно заменить
Код
      while T > 0 do
        begin
          s := s + (T mod 10);
          T := T div 10;
        end;
на
Код
while T>0 do
  begin
   T1:=T mod 10;
   T:=T div 10;
   end;
  if T=T1 then

или я глупости пишу???А если да,то что тогда делать после then???
Объясните мне,пожалста...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 

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