Четверг, 28.03.2024, 13:42
Приветствую Вас Гость

Не ошибается тот, кто ничего не делает.
Но и ничего не делать - ошибка.

Эмиль Кроткий

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Delphi » Задачи по программированию на Delphi » Помогите решить задачи. (Задачи)
Помогите решить задачи.
NemДата: Четверг, 19.04.2012, 17:21 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 4
Репутация: 0
Статус: Offline
Я знаю что задание легкие, но я парюсь так как я начинающий программист и многое мне непонятно. Это нам нечего практически не показывали. Показали основы. Что такое Case of, for, If then, а так больше нечего не показывает и редкость когда подсказывает. Говорить делайте сами
Задание 1 Оператор выбора
Даны два целых числа: D (день) и М(месяц), определяющие правильную дату невисокосного года. Вывести значение D и M для даты,следующие за указанной.
Задание 2 Цикл с For с ветвлением
Написать программу поиска двузначных чисел, обладающих следующим свойством: если к сумме цифр этого числа прибавить квадрат этой суммы, то получится снова число.
Задание 3 Обработка последовательности
Дано целое число N и набор из N вещественных чисел. Если данные набор образует убывающие последовательность , то вывести 0; в противном случае вывести номер первого числа, нарушающего закономерность.
Задание 4 Циклы
Дано натуральное число n Вычислить 2n

Спасибо большое кто поможет
 
xaramamburuДата: Четверг, 19.04.2012, 18:47 | Сообщение # 2
Полковник
Группа: Администраторы
Сообщений: 240
Репутация: 26
Статус: Offline
Вот пример решения задачи, определения следующей даты с учетом високосного года (задание 1). Думаю переделать его будет не очень сложно.

program date;

{$APPTYPE CONSOLE}

var
M,D,Y:Integer;
Mday:array[1..12] of Byte=(31,28,31,30,31,30,31,30,31,31,30,31); // вроде так )) проверьте

begin
Readln(D,M,Y);
If (Y mod 4 = 0) and (Y mod 100 <> 0) or (Y mod 400 = 0) then Mday[2]:=Mday[2]+1;
Inc(D);
If (D > MDay[M]) then
begin
D:=1;
Inc(M);
If M=13 then
begin
M:=1;
Inc(Y);
end;
end;

Writeln(D,'.',M,'.',Y);
Readln;
end.
 
NemДата: Пятница, 20.04.2012, 06:08 | Сообщение # 3
Рядовой
Группа: Пользователи
Сообщений: 4
Репутация: 0
Статус: Offline
Спасибо большое. Но проблема заключается в том что я не могу сделать через оператор выбора case. Через If then для меня нечего сложного нету.
 
xaramamburuДата: Пятница, 20.04.2012, 17:07 | Сообщение # 4
Полковник
Группа: Администраторы
Сообщений: 240
Репутация: 26
Статус: Offline
Можно попробовать так:

program date;

{$APPTYPE CONSOLE}

var
M,D,Y:Integer;
Mday:integer;
begin
Readln(D,M,Y);
case M of
1:Mday:=31;
2:Mday:=28;
3:Mday:=31;
4:Mday:=30;
5:Mday:=31;
6:Mday:=30;
7:Mday:=31;
8:Mday:=30;
9:Mday:=31;
10:Mday:=31;
11:Mday:=30;
12:Mday:=31;

end;
If (Y mod 4 = 0) and (Y mod 100 <> 0) or (Y mod 400 = 0) then Mday:=Mday+1;
Inc(D);
If (D > MDay) then
begin
D:=1;
Inc(M);
If M=13 then
begin
M:=1;
Inc(Y);
end;
end;

Writeln(D,'.',M,'.',Y);
Readln;
end.
 
xaramamburuДата: Пятница, 20.04.2012, 17:35 | Сообщение # 5
Полковник
Группа: Администраторы
Сообщений: 240
Репутация: 26
Статус: Offline
Вот пример решения второй задачи:

program zadanie2;

{$APPTYPE CONSOLE}

var
sr,mr,i:integer;
begin
for I := 10 to 99 do
begin
sr:=(i div 10);//выделяем старший разряд числа
mr:=i-sr*10;//выделяем младший разряд числа
if (sr+mr+(sr+mr)*(sr+mr)) = i then write(i,' ');
end;
readln;
end.
 
Gleb2010Дата: Четверг, 03.05.2012, 19:16 | Сообщение # 6
Рядовой
Группа: Пользователи
Сообщений: 1
Репутация: 0
Статус: Offline
У Вас есть N камней с массами W1, W2 , … WN. Требуется разложить камни на 2 кучки так, чтобы разница масс этих кучек была минимальной.
Входные данные

В первой строке входного файла INPUT.TXT записано число N – количество камней (1 ≤ N ≤ 18). Во второй строке через пробел перечислены массы камней W1, W2 , … WN (1 ≤ Wi ≤ 105).
Выходные данные

В единственную строку выходного файла OUTPUT.TXT нужно вывести одно неотрицательное целое число – минимально возможную разницу между массами двух кучек.
 
xaramamburuДата: Пятница, 04.05.2012, 15:33 | Сообщение # 7
Полковник
Группа: Администраторы
Сообщений: 240
Репутация: 26
Статус: Offline
Алгоритм возможного решения вашей задачи может быть такой:
- Считываем информацию о массах камней в массив;
- Сортируем массив в порядке возрастания;
- Раскладываем камни в кучи (в левую кучу набираем с начала массива, а в правую кучу с конца массива и добиваемся максимального равновесия.
- Выводим результат.
Ниже приведен пример реализации данного алгоритма.

Code

program Project1;
var
a:array [1..18] of integer;
s1, s2: integer;
k, r, N: integer;
F:text;

//процедура заполнения массива из файла
procedure zap;
var i:integer;
begin
Assign(F,'INPUT.TXT');
Reset(F);
Readln(F, N); //считываем количество камней
for i:=1 to N do  Read(F, a[i]); //считываем массы камней
Close(F);
end;

procedure Sort; //процедура сортировки массива простым выбором
var i,j,k:integer;
       maxi:integer;
begin
    for i:=N downto 2 do
       begin
          maxi:=i;
              for j:=1 to i-1 do
                   if a[j]>a[maxi] then maxi:=j;
              if maxi<>i then
                 begin
                      k:=a[i]; a[i]:=a[maxi]; a[maxi]:=k;
                 end;
        end;
end;
begin
zap;//вызываем процедуру заполнения массива
sort;//вызываем процедуру сортировки массива
k:=1;//счетчик камней в первой кучке
r:=N;//счетчик камней во второй кучке
s1:=a[k];//масса в первой кучке
s2:=a[r];//масса во второй кучке
while k<r-1 do //цикл раскладывания камней по кучкам
    begin
     if s1<s2 then begin
                     k:=k+1;
                     s1:=s1+a[k];
                   end
              else begin
                     r:=r-1;
                     s2:=s2+a[r];
                   end;
    end;
//вывод результата в файл
Assign(F,'OUTPUT.TXT');
Rewrite(F);
Write(F,abs(s1-s2));
Close(F);
end.


Да, пример не учитывает, что камень может быть один. Думаю с этим разберетесь сами.))))
 
BlackXackerДата: Четверг, 06.03.2014, 09:41 | Сообщение # 8
Рядовой
Группа: Пользователи
Сообщений: 8
Репутация: 0
Статус: Offline
Привет. Как можно удалить пробелы с SQL запросами?. Я знаю есть оператор ТРЕМ, у меня не получается!!

Добавлено (06.03.2014, 09:41)
---------------------------------------------
TRIM

 
xaramamburuДата: Четверг, 06.03.2014, 11:29 | Сообщение # 9
Полковник
Группа: Администраторы
Сообщений: 240
Репутация: 26
Статус: Offline
BlackXacker
Что значит удалить пробелы с SQL запросами? Удалить пробелы где? В базе?  Или не учитывать пробелы при запросе? Или что еще?
 
BlackXackerДата: Четверг, 06.03.2014, 12:04 | Сообщение # 10
Рядовой
Группа: Пользователи
Сообщений: 8
Репутация: 0
Статус: Offline
Я хочу создавать оцет и отправить на Word мой база *.dbf оцет создал нормально. Проблем получилась с строками. Который там должен один пробель.
Например:  ГУБАДОВ МАЛИК ГАСАН. а получилась ГУБАДОВ      МАЛИК      ГАСАН !!
Я не мог удалить дополнительный пробелы!
 
xaramamburuДата: Пятница, 07.03.2014, 19:03 | Сообщение # 11
Полковник
Группа: Администраторы
Сообщений: 240
Репутация: 26
Статус: Offline
BlackXacker
Я понял, что вы хотите, но теперь непонятно как вы это выводите. Я имею в виду, вы выводите это по частям, т.е. вначале имя, потом фамилия и т.д. Или вы это собираете запросом, а потом выводите?
 
BlackXackerДата: Пятница, 07.03.2014, 21:15 | Сообщение # 12
Рядовой
Группа: Пользователи
Сообщений: 8
Репутация: 0
Статус: Offline
Я так сделаю!!
Edit1.Text:=AdoTable1.Fields[4].AsVariant+' '+AdoTable1.Fields[5].AsVariant+' '+AdoTable1.Fields[6].AsVariant;
Fields[4] - Фамиля, Fields[5] - Имя, Fields[6] - отчество.
Тоже получилось с много пробелы!!

Добавлено (07.03.2014, 21:15)
---------------------------------------------
Table.Cell(j+1,3).Range.InsertAfter(AdoTable1.Fields[4].AsVariant+' '+AdoTable1.Fields[5].AsVariant+' '+AdoTable1.Fields[6].AsVariant);
Строка который добавит строки вы оцет!

 
xaramamburuДата: Пятница, 07.03.2014, 21:58 | Сообщение # 13
Полковник
Группа: Администраторы
Сообщений: 240
Репутация: 26
Статус: Offline
BlackXacker
А если так:
Edit1.Text:=trim(AdoTable1.Fields[4].AsVariant)+' '+trim(AdoTable1.Fields[5].AsVariant)+' '+trim(AdoTable1.Fields[6].AsVariant); 
если возникнет ошибка с типами данных попробуйте AsVariant заменить на AsString.))))
 
BlackXackerДата: Пятница, 25.04.2014, 16:19 | Сообщение # 14
Рядовой
Группа: Пользователи
Сообщений: 8
Репутация: 0
Статус: Offline
Спасибо вам огромное! Супер.

Добавлено (21.04.2014, 11:07)
---------------------------------------------
Привет. Как можно изменит Caption на Кнопка Сообщения?. Код Application.MessageBox('Qeyd Ləğv edilsin?', 'DİQQƏT !!!', MB_YESNO) =  IDYES
Например Место Да, Нет -- должен быть Hə, Yox!!

Добавлено (25.04.2014, 16:19)
---------------------------------------------
Field 'id' cannot be modified что это? как можно исправит это ошибки?

procedure TForm_prihod_qaime.FormActivate(Sender: TObject);
begin
table_storage.Sort:='id';
end;

 
Форум » Delphi » Задачи по программированию на Delphi » Помогите решить задачи. (Задачи)
  • Страница 1 из 1
  • 1
Поиск:


Copyright MyCorp © 2024Конструктор сайтов - uCoz