Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2017, 16:14   #1
qqq``
Пользователь
 
Регистрация: 05.09.2017
Сообщений: 26
По умолчанию дан двумерный массив пользователь вводит натуральные числа,массив размером N на M .Все числа из которых можно извлечь корень извлекаются все числа меньше нуля заменяются их модулем

не получается использовать функцию sqrt выдает ошибку типов

Код:
procedure TForm1.Button1Click(Sender: TObject);
const N=5;
      M=5;
  var
    i,j,a:integer ;
    begin
   for i:=1 to N do begin
  for j:=1 to M do begin
  if (sqrt(Strtoint(stringgrid1.cells[i-1,j-1]))) then
  a:=(strtoint(stringgrid1.cells[i-1,j-1]));
  if a<0 then
  a:=a*-1 ;
  end;
  end;
end
______________________
Используйте тег [CODE] (кнопка с решеткой # в форме сообщения) при вставке кода на форум.

Последний раз редактировалось Alex11223; 02.10.2017 в 16:22.
qqq`` вне форума Ответить с цитированием
Старый 02.10.2017, 16:21   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Секретную ошибку?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 02.10.2017, 16:24   #3
qqq``
Пользователь
 
Регистрация: 05.09.2017
Сообщений: 26
По умолчанию

секретную? (extended)
qqq`` вне форума Ответить с цитированием
Старый 02.10.2017, 16:24   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Секретную ошибку?
почему - "секретную"?

ведь
оператор IF требует логический тип (boolean),
а sqrt в этой строке
Цитата:
Код:
if (sqrt(Strtoint(stringgrid1.cells[i-1,j-1]))) then
возвращает вещественный.

Цитата:
Сообщение от qqq`` Посмотреть сообщение
не получается использовать функцию sqrt выдает ошибку типов
что Вы хотели написать? Для чего Вам операция извлечения квадратного корня?
что Вы проверяете в операторе IF ?

p.s. я уже не говорю про то, что нет проверки на то, что в ячейках грида именно целые числа (а не мусор) и что они положительные.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.10.2017, 16:26   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну автор не опубликовал ее. Видимо секрет.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 02.10.2017, 16:32   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Видимо секрет.
так он думает, что вот тут он об ошибке написал - #3


а задание не годится.
Цитата:
пользователь вводит натуральные числа,массив размером N на M .Все числа из которых можно извлечь корень извлекаются все числа меньше нуля....
см. определение натуральных чисел.
натуральные числа не бывают меньше нуля.
думаю, что речь идёт о ЦЕЛЫХ числах.
вот они могут быть и положительными и отрицательными.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.10.2017, 16:35   #7
qqq``
Пользователь
 
Регистрация: 05.09.2017
Сообщений: 26
По умолчанию

я хотел проверить число которое пользователь ввел в ячейку и если квадрат вычисляется да то stringgrid1.cells[i-1,j-1] :=stringgrid1.cells[i-1,j-1]
qqq`` вне форума Ответить с цитированием
Старый 02.10.2017, 16:58   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от qqq`` Посмотреть сообщение
я хотел проверить число которое пользователь ввел в ячейку и если квадрат вычисляется
квадратный корень вычисляется для ВСЕХ неотрицательных чисел.

поэтому
Код:
var f : Extended;
    i, j : Integer;
begin
   ....
   for i:=0 to N-1 do   //N строк 
       for j:=0 to M-1 do begin  // M столбцов
         try
           f := StrToFloat( stringgrid1.cells[j-1, i-1] );
           if f>=0 
             then f := sqrt(f)
             else f:= abs(f);
           stringgrid1.cells[j-1, i-1] := FloatToStr(f)
	 except
	  on Exception : EConvertError do
	      ShowMessage(Exception.Message);
	  end;
       end;

Последний раз редактировалось Serge_Bliznykov; 02.10.2017 в 17:01.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.10.2017, 17:08   #9
qqq``
Пользователь
 
Регистрация: 05.09.2017
Сообщений: 26
По умолчанию

спасибо
qqq`` вне форума Ответить с цитированием
Старый 02.10.2017, 17:11   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

пожалуйста.

обратите внимание, я в таблице допустил внесение ВЕЩЕСТВЕННЫХ (дробных) чисел.

Если нужны строго целые числа - тогда замените StrToFloat() на StrToInt(), а FloatToStr() замените на IntToStr()
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны натуральные числа N, M. Найти все натуральные числа, меньшие N, квадрат суммы цифр которых равен M Namatrasnik Помощь студентам 1 03.11.2016 23:29
Дано линейный целочисленный массив. Заменить в нем все элементы, значение которых меньше некоторог числа К на значение К. Подсчита PASKAL12 Помощь студентам 2 04.12.2013 19:30
дан двумерный массив и натуральные числа k и p,поменять местами элементы k и p столбцов массива np9Huk Помощь студентам 4 19.04.2010 12:59
вводим два числа, получить все меньшие n натуральные числа, квадрат суммы цифр которых равен m Sparky Помощь студентам 2 22.11.2009 21:59
Дан двумерный массив случайных чисел. Построить одномерный из исходного, выбрав из него все числа кратные ProWinD Паскаль, Turbo Pascal, PascalABC.NET 2 16.06.2008 20:12