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

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

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

 
 Ответить  Открыть новую тему 
> Задача на последовательность,где ошибка?
сообщение
Сообщение #1





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

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


Даны целые числа а1 , а2 .... .Известно , что а1>0 и что среди а1 , а2 ... есть хотя бы одно отрицательное число
.Пусть а1, ... аn - члены данной последовательности ,предшествующие первому отрицательному члену (n заранее известно).Получить max((а1)^3) ,.....,((an)^3).


Program Zadanie4;
Uses wincrt;
var i,n,s:integer;
var a:array[1..100] of integer;
Begin
s:=0;
Writeln('Vvedite kolichestvo elementov');
Read(n);
Writeln('Vvedite elementy');
For i:=1 to n do
read(a[i]);
While (a[i]>0) do
s:=(a[i]*a[i]*a[i])+s;
Writeln('Polucheny dannye:',s)
End.



где ошибка? unsure.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2





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

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


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


Гость






Цитата
найти сумму членов последовательности, предшествующих первому отрицательному или нулевому элементу последовательности.
Как минимум - "найти сумму КУБОВ членов последовательности..."
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





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

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


Цитата(volvo @ 1.02.2009 22:44) *

Как минимум - "найти сумму КУБОВ членов последовательности..."

Усвоил.

Можете помочь еще вот с чем.Надо удалить из строки последний знак препинания.
вот то что получилось только оно почему то удаляет не последний а все.

Program Zadanie6;
uses wincrt;
VAR STR:string;
L,I,K:INTEGER;
M:SET OF CHAR;
Begin
M:=['.',',','!','?','-',';',':'];
Writeln ('Vvedite stroku: ');
Readln (STR);
L:=Length(STR);
For i:=1 to l do
If STR[I] in M then
Delete(str,i,1);
Writeln('Poluchena stroka:',str)
End.



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


Гость






Цитата
оно почему то удаляет не последний а все.
Вообще-то это не ОНО, а ты удаляешь все. Надо было удалять последний - сделал бы так:
      For i:=1 to l do
If STR[I] in M then K := i;
Delete(s, k, 1);
или обратным проходом по строке до первого встреченного знака препинания, с помощью цикла While, если не хочется делать лишние итерации...

Цитата
Усвоил.
Что именно? Это было уточнение предыдущего поста, тебе же (для того, чтобы решить поставленную задачу) надо добавить еще 2 строки.

Добавлено через 1 мин.
P.S. Вообще-то "Одна тема - один вопрос", если что...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6





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

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


Цитата(volvo @ 2.02.2009 0:02) *

Вообще-то это не ОНО, а ты удаляешь все. Надо было удалять последний - сделал бы так:
      For i:=1 to l do
If STR[I] in M then K := i;
Delete(s, k, 1);
или обратным проходом по строке до первого встреченного знака препинания, с помощью цикла While, если не хочется делать лишние итерации...

Что именно? Это было уточнение предыдущего поста, тебе же (для того, чтобы решить поставленную задачу) надо добавить еще 2 строки.

Добавлено через 1 мин.
P.S. Вообще-то "Одна тема - один вопрос", если что...

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





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

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


Задача на обработку строк:
Код

var
STR:string[80];
L,I,K:BYTE;
M:SET OF CHAR;
Begin
M:=['.',',','!','?','-',';',':'];
Write('Vvedite stroku: ');
Readln (STR);
L:=byte(STR[0]);
For i:=L downto 1 do
   If STR[I] in M then
    begin
     K:=i;
     break;
    end;
if i<>0 then
  Delete(str,k,1);
Writeln('Poluchena stroka:',str);
readln;
End.


Что же до задач на последовательность, то там вообще можно обойтись без массива.
Потом, ты пишешь:
Код

While (a[i]>0) do
  s:=(a[i]*a[i]*a[i])+s;

В итоге у тебя получается, что в первой строчке a[i] сравнивается с 0. А чему при этом равно i? Оно равно n+1.
То есть, несуществующий элемент массива сравнивается с 0. Потом, как у тебя к сумме могут добавляться значения элементов массива в кубе при неизменяющемся i?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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