Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
симфония
0 / 0 / 0
Регистрация: 27.04.2011
Сообщений: 13
1

программа для вычисления числа имени на делфи

27.04.2011, 18:37. Просмотров 1653. Ответов 10
Метки нет (Все метки)

как можно сделать так чтобы программа обрабатывала числа?мне надо сделать так чтобы она определила соответствие с буквами и сложила эти числа.если еще проще то программа для вычисления числа имени на делфи(((((((помогите плиз
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2011, 18:37
Ответы с готовыми решениями:

программа для рисования блок-схем процедур из делфи
программа для рисования блок-схем процедур из делфи. кто нить знает где можно...

Передать в делфи для oraquery параметр, в качестве имени таблицы
Запрос: select * from :own.owners where owneruid=0 передаю параметр...

Программа для делфи
Написать программу которая изменяет характеристики шрифта и цвета формы при...

Программа для графических построений в Делфи
Нужна программа,в которой можно построить окружность от руки(не надо вводить...

Изменение имени программы в делфи
Интересует как менять имя программы в процесах не имя формы меняймое через...

10
magirus
27.04.2011, 18:40
  #2
 Комментарий модератора 
учитесь сразу называть темы информативно
0
симфония
0 / 0 / 0
Регистрация: 27.04.2011
Сообщений: 13
27.04.2011, 18:43  [ТС] 3
сорри..
0
Jazon_deenAlt
4111 / 986 / 191
Регистрация: 09.04.2009
Сообщений: 4,226
27.04.2011, 18:50 4
ничего непонятно... обьясните как имбицылу типа "я так кнопочками тыц-тыц-тыц *тут вставте что именно натыцкали* нажымаю там то, а мне на ето вжыыык и такое-то... а если я натыцкаю не так а так то мне на ето бламб и воттаквот..." чем детальнее и информативнее тем быстрее и большый шанс на успех
0
симфония
0 / 0 / 0
Регистрация: 27.04.2011
Сообщений: 13
28.04.2011, 20:34  [ТС] 5
мне дана только информация о числах.нумерология.и мне по этой теме надо составить программу в которую пользователь сможет забить своё имя а программа выдаст число этого имени и краткую информацию(((как мне сделать так чтоб каждой букве присваивалась цифра и при вводе имени шла обработка этих цифр и их сложение

Добавлено через 38 секунд
0
d0lmat
28 / 28 / 4
Регистрация: 28.04.2011
Сообщений: 79
29.04.2011, 09:54 6
Привет!

Ну тут без массивов не обойтись.
Сделай два массива: один с буквами, второй с цифрами соответствующими буквам первого массива.
Например: в первом массиве первый элемент буква "А", во втором массиве первый элемент число 32, которое заложено для буквы "А".
Дальше при разборе имени ты смотришь в какой позиции стоит буква и соответственно по этой позиции берешь число.

Ну как то так
0
симфония
0 / 0 / 0
Регистрация: 27.04.2011
Сообщений: 13
30.04.2011, 11:06  [ТС] 7
меня эти массивы приследуют(((((ненавижу.спасибочки

Добавлено через 6 минут
теперь ток понять бы как эт прописать правильнолегче когда в реале объясняютпойду клаву разбирать
0
симфония
0 / 0 / 0
Регистрация: 27.04.2011
Сообщений: 13
01.06.2011, 16:58  [ТС] 8
помогите пожалуйст..сделала программу а она или виснет или не совсем правильно работает.не знаю почему.программа должна вычислить число введенного имени и дать инфу в соответствии с числом.вот программа:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Button1: TButton;
Label2: TLabel;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

const m: array [0..32] of string = ('а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ъ','ы','ь' ,'э','ю','я');
m1: array [0..32] of integer = (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,29,30,31,32,33);
m2: array [0..8] of string = ('Само по себе число имени 1 не способно приносить большой успех, но если ему помогает число судьбы 1, приносит большую пользу- известность, сотрудничество, славу и внимание. легко добиться прогресса во всех областях.',
'Число приносит изящество и молодость. Его обладатели часто испытывают перемены в своей жизни, может дарить успех в таких областях, как импорт, экспорт и торговля лекарствами.',
'Хорошее число имени, приносит известность. Символизирует талант, разносторонность и веселость, указывает на науку, мир искусства и спортивную жизнь. Эти люди тверды, верны, организованны и умеренны.',
'Не является хорошим числом имени. "Четверки" практичны, упорядоченны, лояльны, терпеливы и экономны, смелы, честны и имеют высокие критерии. Иногда превращаются в трудоголиков в ущерб семье и здоровью.',
'Хорошее число имени. Делает своих обладателей прогрессивными, общительными и живыми, дарует им популярность. Число 5 указывает на духовную свободу и независимость действий. Любят путешествия, приключения.',
'Наиболее подходит поэтам, художникам, танцорам и музыкантам. Это числдо имени заставляет любить сотрудничество: они становятся добрыми, симпатичными, гостеприимными, милосердными, эмоциональными и непостоянными.',
'"Семерку" часто считают непохожей на других, отчужденной. Склонны к уединению, не умеют выражать свои чувства, мысли. Высокочуствительные натуры,чутко реагирующие на настроение других,с трудом принимающие решения.',
'Создает своим обладателям много трудностей, задержек и препятствий. Оно приносит людям одиночество и наивность со стороны друзей и родственников. Они часто не находят понимания у окружающихи страдают от одиночества.',
'Делает людей искренними, выразительными, созидательными и независимыми. Оно определяет их сильной волей, определенностью, силой и способностью выдержать трудности. Это хорошее число имени для политиков.');

var Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var stroka : string;
i,j,g : byte;
summa : integer;
begin
If Edit1.Text <> '' //условие если пользователь не ввел имя
Then
Begin
repeat
Stroka := AnsiLowerCase(Edit1.Text); //присвоение имени в переменную и перевод символов строки в нижний регистр
summa := 0; //обнуление суммы
For i := 1 to length(stroka) do //цикл для подсчета суммы цифр каждой буквы
begin
For j := 0 to 32 do //цикл для нахождения значение буквы
If copy(Stroka,i,1) = m[j] //сравнение выбранной буквы с массивом буукв
Then
begin
summa := summa + m1[j]; //подсчет суммы найденных значений
break; //выход из цикла
end;
End;
Stroka:=IntToStr(summa); //перевод найденной суммы в строку
until summa<10;
Memo1.Text := IntToStr(summa)+' , '+ m2[summa]; //вывод результата
End
Else MessageDlg('Вы не ввели имя',mtError,[mbOk],0); //сообщение об ошибки
end;

end.
0
julia77
84 / 68 / 12
Регистрация: 17.02.2011
Сообщений: 138
02.06.2011, 10:10 9
Симфония, есть несколько неточностей в алгоритме.
1.Сама постановка задачи. Насколько помню свое детское увлечение нумерологией (все это было давно и потому я могу ошибаться) каждой букве присваивается число от 1 до 9, но не как не порядковый номер в алфавите. Уточните пожалуйста этот аспект. Возможно массив m1 придется переписать.
2. Сама задача делится на две подзадачи: Суммируются числа, соответствующие каждой букве имени, а потом суммируются все цифры в сумме, пока не получится однозначное число. Алгоритм решения каждой подзадачи разный и объединять их внутри repeat until не стоит
Вот решение первой подзадачи (сумма чисел, соответств. буквам)
Delphi
1
2
3
4
5
6
7
8
9
10
11
 Stroka := AnsiLowerCase(Edit1.Text); //присвоение имени в переменную и перевод символов строки в нижний регистр
      For i := 1 to length(stroka) do //цикл для подсчета суммы цифр каждой буквы
        begin
          For j := 0 to 32 do //цикл для нахождения значение буквы
          If copy(Stroka,i,1) = m[j] //сравнение выбранной буквы с массивом буукв
            Then
              begin
                summa := summa + m1[j]; //подсчет суммы найденных значений
                break; //выход из цикла
              end;
        End;
Вот решение второй подзадачи (суммирование чисел в сумме до однозначного числа)
Delphi
1
2
3
4
5
6
7
Stroka:=IntToStr(summa); //перевод найденной суммы в строк
      repeat
        summa := 0; //обнуление суммы
        for i:=1 to length(stroka) do
          summa:=summa+strToInt(copy(Stroka,i,1));
        Stroka:=IntToStr(summa); //перевод найденной суммы в строку
      until summa<10;
3.Ошибка при выводе в мемо результата
у вас
Memo1.Text := IntToStr(summa)+' , '+ m2[summa]; //вывод результата
Но m2 массив с нумерацией от нуля, а следовательно выводить нужно элемент m2[summa-1]
Delphi
1
Memo1.Text := IntToStr(summa)+' , '+ m2[summa-1];
Ну и вместе обработчик нажатия кнопки должен быть таким
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
29
30
procedure TForm1.Button1Click(Sender: TObject);
var stroka : string;
  i,j : byte;
  summa : integer;
begin
  If Edit1.Text <> '' //условие если пользователь не ввел имя
  Then
    Begin
      Stroka := AnsiLowerCase(Edit1.Text); //присвоение имени в переменную и перевод символов строки в нижний регистр
      For i := 1 to length(stroka) do //цикл для подсчета суммы цифр каждой буквы
        begin
          For j := 0 to 32 do //цикл для нахождения значение буквы
          If copy(Stroka,i,1) = m[j] //сравнение выбранной буквы с массивом буукв
            Then
              begin
                summa := summa + m1[j]; //подсчет суммы найденных значений
                break; //выход из цикла
              end;
      End;
      Stroka:=IntToStr(summa); //перевод найденной суммы в строк
      repeat
        summa := 0; //обнуление суммы
        for i:=1 to length(stroka) do
          summa:=summa+strToInt(copy(Stroka,i,1));
        Stroka:=IntToStr(summa); //перевод найденной суммы в строку
      until summa<10;
      Memo1.Text := IntToStr(summa)+' , '+ m2[summa-1]; //вывод результата
    End
    Else MessageDlg('Вы не ввели имя',mtError,[mbOk],0); //сообщение об ошибки
end;
Но еще раз проверьте правильно ли вы ввели массив m1.
0
симфония
0 / 0 / 0
Регистрация: 27.04.2011
Сообщений: 13
02.06.2011, 17:10  [ТС] 10
спасибо))там при сложении именно эти числа и получаются)))))
0
julia77
84 / 68 / 12
Регистрация: 17.02.2011
Сообщений: 138
02.06.2011, 22:28 11
Действительно, при сложении именно эти цифры и получаются. Тогда массив m1 не нужен вообще. Обратите внимание, код буквы совпадает с индексом соответствующего элемента в массиве m, увеличенного на 1, т.е у элемента m[j] в вашей нумерологии будет код j+1. И часть программы, связанная с вычислением суммы имени будет такой
Delphi
1
2
3
4
5
6
7
8
9
10
11
Stroka := AnsiLowerCase(Edit1.Text); //присвоение имени в переменную и перевод символов строки в нижний регистр
      For i := 1 to length(stroka) do //цикл для подсчета суммы цифр каждой буквы
        begin
          For j := 0 to 32 do 
          If copy(Stroka,i,1) = m[j] 
            Then
              begin
                summa := summa +j+1; //Вот здесь я убрала m1
                break; 
              end;
        End;
0
02.06.2011, 22:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2011, 22:28

Программа для вычисления давления
Помогите пожалуйста написать программу по сжатию нефти при опускании на...

Программа для вычисления интеграла
Написал код, для вычисления определенного интеграла с точностью до 0,001 ...

Программа для вычисления касательных
Сап всем. Не могу никак придумать, как сделать программу. Есть решение, каркас,...


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

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

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