Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Pascal&C]Найти самое большое и самое маленькое, число. Ошибка в программе 
:(
    Опции темы
SunRaider
Дата 21.5.2007, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 10.5.2007

Репутация: -1
Всего: -1



Помогите, не могу понять где ошибка:

Код
Uses crt;

var
n,i,z,imax,imin : integer;
amax, amin, dll : real;
a : array[1..10] of integer;
fin, fout : text;

Label
vvod_n;

begin
vvod_n:
  writeln('Vvedite 4islo simvolov v stroke: ');
readln(n);

if(n<2) or (n>100) then
begin
  writeln('Nedopustimoe zna4enie!!!'); 
  goto vvod_n;
end;

write ('1.File or 2.Keyboard');
readln (z);
assign (fout,'230.dat');
assign (fin,'230.txt');
reset (fout);
rewrite (fin);
if z=1 then
begin
for i:=1 to n do
readln(fout,a[i]);
end;
if z=2 then
begin
write('Vvedite stroku simvolov -> ');
for i:=1 to n do
readln(a[i]);
end;

amax := a[1];
imax:=1;
for i:=1 to n do
if a[i] > amax then
begin
amax := a[i];
imax:=i;
end;

amin := a[1];
imin:=1;
for i:=1 to n do
if a[i] < amin then
begin
amin := a[i];
imin:=i;
end;

writeln(fin,'Значение максимального элемента -> ', amax]);
writeln(fin,'Значение минимального элемента -> ', amin]);

dll:=amax-amin;
writeln(fin,'Значение длины наименьшего отрезка -> ', dll);
close(fout);
close(fin);
end. 


Есть последовательность чисел, нужно найти самое большое и самое маленькое, а потом вычесть из большого маленькое. Ввод с клавы и из файла. 

Спасибо!
PM MAIL   Вверх
Klin
Дата 22.5.2007, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 2
Всего: 25



GOTO?!!!! smile  Пойду повешусь... smile У. Ребят - устаревшее это все. Нет, делаете пролграмму, черт с вами, но если вы делаете задание или курсовую - забудьте!!! Есть такой вариант:
Код

uses CRT; { библиотека для очистки экрана }
var
 max, min, R, count, i: integer;
 data: string;
 myfile: text;
{-------------------------------------------------}

{ Функция преобразования строки в число на "ходу" }
function StrToInt(str: string): integer;
var
 error, int: integer;
begin
 Val(str,int,error);
 if (error = 0) then begin StrToInt:=int; end
 else StrToInt:=0;
end;
{-------------------------------------------------}
begin
 ClrScr; { очищаем экран }
 while ( (count<2) or (count>10) ) do begin { цикл завершиться, если 2<=count<=10 }
  write('Enter count of string (2..10): '); readln(count);
 end;
 assign(myfile,'datafrom.txt'); { открываем файл }
  reset(myfile); { для чтения }
  read(myfile,data); { читаем строку }
 close(myfile); { закрываем его }

 writeln; { дизайн ;) }

 for i:=1 to count do write(data[i],';'); { выводим данные с заданными условиями }
 ;

 max:=StrToInt(data[1]); { макс. = 1 - му элементу }
 min:=StrToInt(data[1]); { мин. = 1 - му элементу }
 for i:=2 to count do begin { цикл проверки }
  if (StrToInt(data[i])>max) then max:=StrToInt(data[i]); { проверка на максимум }
  if (StrToInt(data[i])<min) then min:=StrToInt(data[i]); { проверка на минимум }
 end;

 R:=max-min; { находим разность }

 writeln; { опять дизайн ;) }

 writeln('Max = ',max); { выводим макс. }
 writeln('Min = ',min); { выводим мин. }
 writeln('R = ',R); { выводим разность }

 assign(myfile,'datanew.txt'); { открываем (создаем) новый файл}
  rewrite(myfile);
  writeln(myfile,Copy(data,1,count)); { записываем ряд чисел }
  writeln(myfile,'max=',max); { записываем максимум }
  writeln(myfile,'min=',min); { записываем минимум }
  writeln(myfile,'r=',R); { записываем разность }
 close(myfile); { закрываем }
 readln; { ждем нажатия Enter }
end.


Добавлено через 1 минуту и 59 секунд
дай пример входных данных, а то, что я написал действительно только для целых чисел больше -1, но не больше 10.


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
SunRaider
Дата 22.5.2007, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 10.5.2007

Репутация: -1
Всего: -1



Цитата
дай пример входных данных, а то, что я написал действительно только для целых чисел больше -1, но не больше 10


Не надо, так хорошо. А ты не мог бы это еще и на Си написать? Очень надо! smile 
PM MAIL   Вверх
Misha_White
  Дата 22.5.2007, 02:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 25.4.2007
Где: Кодинск

Репутация: 1
Всего: 1



Klin, 
Ууууу... темный лес... намутил-то... А че, сразу массив нельзя ввести?
Я же уже здесь писал такую прогу... только для максимума...
Код

Uses crt;
type mas=array[1..10] of integer;

var
n,i,z,imax,imin : integer;
amax, amin, dll : real;
a :mas; 
fout : text;
fin:file of mas;

begin
clrscr;
repeat
  writeln('Vvedite 4islo simvolov v (2<n<100): ');
    readln(n);
  if(n<2) or (n>100) then
   writeln('Nedopustimoe zna4enie!!!'); 
until (n>2) and (n<10);

write ('1.File or 2.Keyboard');
readln (z);
assign (fout,'230.dat');
assign (fin,'230.txt');
rewrite (fin);
if z=1 then
begin
reset (fout);
 for i:=1 to n do
  readln(fout,a[i]);
close (fount);
end;
if z=2 then
begin
rewrite(fout);
write('Vvedite stroku simvolov -> ');
for i:=1 to n do
 begin
  readln(a[i]);
  write(fout,a[i]);
 end;
close(fout);
end;

amax := a[1];
imax:=1;
for i:=1 to n do
if a[i] > amax then
begin
amax := a[i];
imax:=i;
end;

amin := a[1];
imin:=1;
for i:=1 to n do
if a[i] < amin then
begin
amin := a[i];
imin:=i;
end;
writeln('Максимальный элемент a[',imax,']=', amax);
writeln('Минимальный элемент a[',imin,']=', amin);

writeln(fin,'Максимальный элемент a[',imax,']=', amax);
writeln(fin,'Минимальный элемент a[',imin,']=', amin);

dll:=amax-amin;
writeln('Значение длины наименьшего отрезка -> ', dll);
writeln(fin,'Значение длины наименьшего отрезка -> ', dll);


close(fin);
end. 


Добавлено через 6 минут и 46 секунд
Опять же необходимо при первом запуске выбрать ввод с клавы, тогда получим типизированный файл, из которого в дальнейшем сможе считать массив...

Это сообщение отредактировал(а) Misha_White - 22.5.2007, 02:48
--------------------
Я не волшебник... я только учусь...  
PM MAIL ICQ Skype   Вверх
Klin
Дата 22.5.2007, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 2
Всего: 25



Цитата(SunRaider @  22.5.2007,  01:40 Найти цитируемый пост)
А ты не мог бы это еще и на Си написать? Очень надо

А че в топе паскаль записан?

Цитата(Misha_White @  22.5.2007,  03:43 Найти цитируемый пост)
Ууууу... темный лес... намутил-то... А че, сразу массив нельзя ввести?

Этого не знал:
Цитата(Misha_White @  22.5.2007,  03:43 Найти цитируемый пост)
fin:file of mas;




--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Misha_White
Дата 22.5.2007, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 25.4.2007
Где: Кодинск

Репутация: 1
Всего: 1



Klin, 
Цитата(Klin @  22.5.2007,  19:26 Найти цитируемый пост)
Этого не знал:

Цитата(Misha_White @  22.5.2007,  03:43 )
fin:file of mas;


Теперь знай... Типизированные файлы почитать нужно...

--------------------
Я не волшебник... я только учусь...  
PM MAIL ICQ Skype   Вверх
Klin
Дата 22.5.2007, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 2
Всего: 25



Цитата(Misha_White @  22.5.2007,  14:55 Найти цитируемый пост)
файлы почитать нужно...

Misha_White, я паскаль, вообще без книг изучаю, методом научного тыка и справки, поэтому не сердчайте smile



--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Misha_White
  Дата 22.5.2007, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 25.4.2007
Где: Кодинск

Репутация: 1
Всего: 1



Klin,  smile 
Ну бывает... А зачем людей путать?  smile  smile  Ладно, пора прекращать болтавню... И вобще, надо как-то приучать пользователей ставить Галку... smile 
--------------------
Я не волшебник... я только учусь...  
PM MAIL ICQ Skype   Вверх
SunRaider
Дата 22.5.2007, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 10.5.2007

Репутация: -1
Всего: -1



Цитата
А че в топе паскаль записан?

Про Си не подумал, забыл!

Цитата
И вобще, надо как-то приучать пользователей ставить Галку...

Пользователь, даже если у него не получаются какие-то программы, не дурней паровоза!
Если не отметил, значит хочу задать еще несколько вопросов!

А за прогу - большое спасибо!!! smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0509 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.