Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
БогДелфей
422 / 330 / 36
Регистрация: 31.05.2011
Сообщений: 1,156
1

В зависимости от значения целого числа К просклонять фразу: "К файл (файла, файлов)".

24.01.2012, 00:02. Просмотров 982. Ответов 5
Метки нет (Все метки)

господа! киньте плиз функцию, штоб писало скока файлов, тобишь интерисуют слова: "файл", "файла", "файлов" например: 1 файл, 2 файла, но никак не 10 файла
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2012, 00:02
Ответы с готовыми решениями:

Для целого числа k от 1 до 99 вывести фразу "мне k лет"
procedure TForm1.Button1Click(Sender: TObject); var k:integer; n:string;...

В зависимости от значения К сформировать фразу: "мы выпили k бутылок сока".
Для натурального числа k вывести фразу "мы выпили k бутылок пива", согласовав...

Из слов "Работа", "крест", "тон" составить фразу "Кто не работает, тот не ест" и определить ее длину
Из слова "Работа","крест","тон" составить фразу:"Кто не работает, тот не ест" и...

Дана строка, состоящая из букв, цифр, запятых, точек, знаков "+" и "-". Выделить подстроку, которая соответствует записи целого числа (т.е. начинаетс
Дана строка, состоящая из букв, цифр, запятых, точек, знаков "+" и "-"....

При открытии большого числа файлов - ошибка "Файл не найден"
Здравствуйте уважаемые знатоки! Прошу вашей помощи. При выборе большого...

5
kwinto
55 / 83 / 24
Регистрация: 27.02.2010
Сообщений: 397
24.01.2012, 00:08 2
padeg.dll

Добавлено через 2 минуты
сорри, не подойдет
0
БогДелфей
422 / 330 / 36
Регистрация: 31.05.2011
Сообщений: 1,156
24.01.2012, 00:14  [ТС] 3
библа прикольная, но тоскать её с прогой изза 3 слов, как то не камильфо(((
0
Mawrat
12827 / 5735 / 1700
Регистрация: 19.09.2009
Сообщений: 8,807
24.01.2012, 09:05 4
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от БогДелфей Посмотреть сообщение
господа! киньте плиз функцию, штоб писало скока файлов
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function Padeg(const aNum : Integer) : String;
var
  Num : Integer;
  D1, D2 : 0..9;
begin
  Num := Abs(aNum);
  D1 := Num mod 10; //Младший разряд.
  Num := Num div 10;
  D2 := Num mod 10; //Второй младший разряд.
 
  Result := 'файл';
  case D1 of
    0 : Result := Result + 'ов';
    1 : if D2 = 1 then Result := Result + 'ов';
    2..4 :
    begin
      if D2 = 1 then Result := Result + 'ов'
      else Result := Result + 'а';
    end;
    else
      Result := Result + 'ов';
  end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit2.Text := Padeg( StrToInt(Edit1.Text) );
end;
2
БогДелфей
422 / 330 / 36
Регистрация: 31.05.2011
Сообщений: 1,156
24.01.2012, 15:29  [ТС] 5
я во так написал
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function CountFilesString(CountFiles: Integer): String;
var
  s: String;
begin
  s := IntToStr(CountFiles);
    if (s[Length(s)] = '1') and (s[Length(s) - 1] <> '1') then Result := ' файл'
        else
          if ((s[Length(s)] = '2') or (s[Length(s)] = '3') or (s[Length(s)] = '4')) and (s[Length(s) - 1] <> '1') then Result := ' файла'
          else
            Result := ' файлов';
end;
 
procedure TForm1.Button3Click(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to 1000 do
    begin
      Memo1.Lines.Add(IntToStr(i) + CountFilesString(i));
    end;
end;
1
Mawrat
12827 / 5735 / 1700
Регистрация: 19.09.2009
Сообщений: 8,807
24.01.2012, 20:01 6
Ещё добавлю, код в моём сообщении можно улучшить - там в операторе case вариант для нуля можно убрать. Потому что он логически перекрывается разделом else. Собственно, БогДелфей как раз так и сделал - перенёс вариант с нулём в else, только сделано это на базе оператора if. БогДелфей, только вот действия со строкой в твоём коде имеют дыры - там есть моменты, когда может происходить выход за пределы строки.
Поэтому, с учётом вышесказанного можно написать так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function Padeg(const aNum : Integer) : String;
var
  Num : Integer;
  D1, D2 : 0..9;
begin
  Num := Abs(aNum);
  D1 := Num mod 10; //Младший разряд.
  Num := Num div 10;
  D2 := Num mod 10; //Второй младший разряд.
 
  Result := 'файл';
  case D1 of
    1 : if D2 = 1 then Result := Result + 'ов';
    2..4 :
    begin
      if D2 = 1 then Result := Result + 'ов'
      else Result := Result + 'а';
    end;
    else
      Result := Result + 'ов';
  end;
end;
1
24.01.2012, 20:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2012, 20:01

Файл: Добавить в конец файла "Name1" содержимое файла "Name2"
Даны два тестовых фаила с именами &quot;Name1&quot; и &quot;Name2&quot;. Добавить в конец фаила...

Сформируйте новый файл t2, который будет содержать те строки файла t1, которые начинаются с буквы "а" и заканчиваются буквой "я"
Задание 4. Задан текстовый файл t1. Сформируйте новый файл t2, который будет...

Рассчитать значение функции Y=x^n в зависимости от значения "x" с выбором вида формулы
Рассчитать значение функции Y=x^n в зависимости от значения &quot;x&quot;с выбором вида...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru