Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 2 [3] 4 5   Вниз
  Печать  
Автор Тема: ЭВМ 1 курс.Алгоритмические языки. С++  (Прочитано 131884 раз)
0 Пользователей и 15 Гостей смотрят эту тему.
FallenSoul
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #60 : 11-10-2006 12:54 » 

Код:
#include<iostream.h>
#include<conio.h>
char z,x,c,v,b,n,m,a,s,d,f,g,h,j,k,l,q,w,e,r,t,y,u,i,o,p;
char engrus[25];
char ruseng[25];
int kolvo;
void main()
 {
 engrus[0]='z';
 engrus[1]='x';
 engrus[2]='c';
 engrus[3]='v';
 engrus[4]='b';
 engrus[5]='n';
 engrus[6]='m';
 engrus[7]='a';
 engrus[8]='s';
 engrus[9]='d';
 engrus[10]='f';
 engrus[11]='g';
 engrus[12]='h';
 engrus[13]='j';
 engrus[14]='k';
 engrus[15]='l';
 engrus[16]='e'; //н
 engrus[17]='r';
 engrus[18]='t';
 engrus[19]='y';
 engrus[20]='u';
 engrus[21]='i';
 engrus[22]='o';
 engrus[23]='p';
 engrus[24]=' ';

 ruseng[0]='§';
 ruseng[1]='Єб';
 ruseng[2]='ж';
 ruseng[3]='ў';
 ruseng[4]='Ў';
 ruseng[5]='­';
 ruseng[6]='¬';
 ruseng[7]=' ';
 ruseng[8]='б';
 ruseng[9]='¤';
 ruseng[10]='д';
 ruseng[11]='Ј';
 ruseng[12]='е';
 ruseng[13]='©';
 ruseng[14]='Є';
 ruseng[15]='«';
 ruseng[16]='н';
 ruseng[17]='а';
 ruseng[18]='в';
 ruseng[19]='©';
 ruseng[20]='г';
 ruseng[21]='Ё';
 ruseng[22]='®';
 ruseng[23]='Ї';
 ruseng[24]=' ';

  clrscr();
  cout<<"” ¬Ё«Ёп:";
//  cin>>z>>x>>c>>v>>b>>n>>m>>a>>s>>d>>f>>g>>h>>j>>k>>l>>q>>w>>e>>r>>t>>y>>u>>i>>o>>p;
  cin>>z>>x>>c>>v>>b>>n>>m;
  kolvo=0;
  for(kolvo=0;kolvo<25;kolvo++)
   {
   if(z==engrus[kolvo])
    {
     cout<<ruseng[kolvo];
    }
   }
   kolvo=0;
  for(kolvo=0;kolvo<25;kolvo++)
   {
   if(x==engrus[kolvo])
    {
     cout<<ruseng[kolvo];
    }
   }
   kolvo=0;
  for(kolvo=0;kolvo<25;kolvo++)
   {
   if(c==engrus[kolvo])
    {
     cout<<ruseng[kolvo];
    }
   }
   kolvo=0;
   for(kolvo=0;kolvo<25;kolvo++)
    {
    if(v==engrus[kolvo])
     {
      cout<<ruseng[kolvo];
     }
   }
   kolvo=0;
  for(kolvo=0;kolvo<25;kolvo++)
   {
   if(b==engrus[kolvo])
    {
     cout<<ruseng[kolvo];
    }
   }
   kolvo=0;
  for(kolvo=0;kolvo<25;kolvo++)
   {
   if(n==engrus[kolvo])
    {
     cout<<ruseng[kolvo];
    }
   }
   kolvo=0;
  for(kolvo=0;kolvo<25;kolvo++)
   {
   if(m==engrus[kolvo])
    {
     cout<<ruseng[kolvo];
    }
   }
   kolvo=0;
  for(kolvo=0;kolvo<25;kolvo++)
   {
   if(a==engrus[kolvo])
    {
     cout<<ruseng[kolvo];
    }
   }
   kolvo=0;
  for(kolvo=0;kolvo<25;kolvo++)
   {
   if(s==engrus[kolvo])
    {
     cout<<ruseng[kolvo];
    }
   }
   kolvo=0;
  for(kolvo=0;kolvo<25;kolvo++)
   {
   if(d==engrus[kolvo])
    {
     cout<<ruseng[kolvo];
    }
   }
   kolvo=0;
  for(kolvo=0;kolvo<25;kolvo++)
   {
   if(f==engrus[kolvo])
    {
     cout<<ruseng[kolvo];
    }
   }
   kolvo=0;
  for(kolvo=0;kolvo<25;kolvo++)
   {
   if(g==engrus[kolvo])
    {
     cout<<ruseng[kolvo];
    }
   }
   kolvo=0;
  for(kolvo=0;kolvo<25;kolvo++)
   {
   if(h==engrus[kolvo])
    {
     cout<<ruseng[kolvo];
    }
   }
   kolvo=0;
  for(kolvo=0;kolvo<25;kolvo++)
   {
   if(j==engrus[kolvo])
    {
     cout<<ruseng[kolvo];
    }
   }
   kolvo=0;
  for(kolvo=0;kolvo<25;kolvo++)
   {
   if(k==engrus[kolvo])
    {
     cout<<ruseng[kolvo];
    }
   }
   kolvo=0;
  for(kolvo=0;kolvo<25;kolvo++)
   {
   if(l==engrus[kolvo])
    {
     cout<<ruseng[kolvo];
    }
   }
   kolvo=0;
  for(kolvo=0;kolvo<25;kolvo++)
   {
   if(q==engrus[kolvo])
    {
     cout<<ruseng[kolvo];
    }
   }
   kolvo=0;
  for(kolvo=0;kolvo<25;kolvo++)
   {
   if(w==engrus[kolvo])
    {
     cout<<ruseng[kolvo];
    }
   }
   kolvo=0;
  for(kolvo=0;kolvo<25;kolvo++)
   {
   if(e==engrus[kolvo])
    {
     cout<<ruseng[kolvo];
    }
   }
   kolvo=0;
  for(kolvo=0;kolvo<25;kolvo++)
   {
   if(r==engrus[kolvo])
    {
     cout<<ruseng[kolvo];
    }
   }
   kolvo=0;
  for(kolvo=0;kolvo<25;kolvo++)
   {
   if(t==engrus[kolvo])
    {
     cout<<ruseng[kolvo];
    }
   }
   kolvo=0;
  for(kolvo=0;kolvo<25;kolvo++)
   {
   if(y==engrus[kolvo])
    {
     cout<<ruseng[kolvo];
    }
   }
   kolvo=0;
  for(kolvo=0;kolvo<25;kolvo++)
   {
   if(u==engrus[kolvo])
    {
     cout<<ruseng[kolvo];
    }
   }
   kolvo=0;
  for(kolvo=0;kolvo<25;kolvo++)
   {
   if(i==engrus[kolvo])
    {
     cout<<ruseng[kolvo];
    }
   }
   kolvo=0;
  for(kolvo=0;kolvo<25;kolvo++)
   {
   if(o==engrus[kolvo])
    {
     cout<<ruseng[kolvo];
    }
   }
   kolvo=0;
  for(kolvo=0;kolvo<25;kolvo++)
   {
   if(p==engrus[kolvo])
    {
     cout<<ruseng[kolvo];
    }
   }
  getch();
 }

1. Как мне прервать ввод данных в операторе cin , если их будет больше чем мне надо в слове?
2. Как закодировать пробел?
« Последнее редактирование: 14-12-2007 22:18 от Алексей1153++ » Записан
FallenSoul
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #61 : 11-10-2006 13:00 » 

С "enterom" тоже уже разобрался. Вопрос- как остановить ввод данных , если допустим слово состоит из 10 букв ,а у меня програмно заложено вводить 24?

сейчас это 7 символов. но я предпологаю поднять это кол-во до 20 где то.

 
Код:
cin>>z>>x>>c>>v>>b>>n>>m;
Записан
Sands
Помогающий

ua
Offline Offline

« Ответ #62 : 11-10-2006 13:08 » 

Если я правильно понял идею, то ето простенький переводчик с транслита на русский и обратно, вот только нельзя делать все вот так напрямую. тебе же nikedeforest показал как можно прочитать слово ЛЮБОЙ длинны до определенного предела. Читай свое слово в строку(она ж емассив символов) а потом поелементно беги по строке и обрабатывай каждый элемент строки отдельно. И вообще хотелось бы узнать, что Вам Ваш преподаватель говорил про работу смассивами вообще и со строками в частности?
Записан
FallenSoul
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #63 : 11-10-2006 13:12 » 

Это простой переводчик транслита, правильно понял. Преподователь?-Пока ничего. На неделе массивы будут следущими лекциями.
Дело в том что на одном предмете препод поставил такой вопрос: пишите программу. Если кто сможет написать-получит зачёт автоматом. Вот я и решил попробовать ...

Пост nickdeforest прочитал, но практически ничего не понял.
« Последнее редактирование: 11-10-2006 13:13 от FallenSoul » Записан
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #64 : 11-10-2006 13:22 » 

Слушай, это ж охренеть можно, ты чего там такое программишь, что столько кода наплодил? Я смотрю ты какое-то соотвествие выводишь, но не пойму цели.
Не любишь ты себя совсем, говори свое задание, будем новый метод думать.
Записан

ещё один вопрос ...
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #65 : 11-10-2006 13:26 » 

 А что ты в моем посте не понял? Я ж тебе там код привел вбей его, он рабочий даже. Скажи что именнно не понял, разберемся.
По поводу задания. Это я так понимаю буква х русская соответствует h английской? Так? Если да, то можно по гуманнее сделать будет.
Записан

ещё один вопрос ...
Sands
Помогающий

ua
Offline Offline

« Ответ #66 : 11-10-2006 13:51 » 

Я бы написал что-то типа такого
Код:
#include <stdio.h>
#include <conio.h>
#include <string.h>
int ContinueFlag = 1;
int Method = 0;
main()
{
 char* str = new char[100];
 char* Res = NULL;
 while(ContinueFlag == 1)
  {
    memset(str,0,strlen(str));
    if(Res!=NULL)
     delete[] Res;
    printf("Input string to translate >> ");
    scanf("%s",str);
    printf("Choose method(0 eng -> rus,1 rus -> eng) >>");
    scanf("%i",&Method);
    switch(Method)
     {
       case 0: {
                    engrus(str,Res);
                    printf ("Result is %s",Res);
                    break;
                   }
        case 1: {
                    ruseng(str,Res);
                    printf ("Result is %s",Res);
                    break;
                   }
        default:printf("Wrong choise");
     }
    printf("Continue? (Y - 1/N - 0) >>");
    scanf("%i",ContinueFlag);
  }
}
функции перевода engrus и ruseng попробуй написать сам заодно почитай про работу со строками. Будут проблемы - пиши.
Записан
FallenSoul
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #67 : 11-10-2006 13:57 » 

Цель моего задания:
Перевод с транслита на русский, и с русского на транслит слов введённых с клавиатуры.
Опять же-я не програмер со стажем, а только студент со стажем 1.5 месяца. Незнаю еще никаких особых способов, поэтому пытаюсь действовать подручными средствами. cin , cout , массивы. Пишу для того, чтобы потом смог объяснить-а глупо скатать готовый код не лучшее решение.


Не понятно в посте фореста сама работа программы.
Записан
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #68 : 11-10-2006 14:17 » 

Цитата
Не понятно в посте фореста сама работа программы.
Ну ты блин даешь. Вроде массивы исползуешь значит изучил их. А что тогда не понятно тебе в трех строках. Я тебе показал, как в массив слово загнать - первые две строки. Что непонятно-то?
По поводу задания. Ты рассматриваешь только замену по одной букве? Т.е. я напрмер букву "ч" писал бы так "ch". Такое не должно рассматриваться?
Записан

ещё один вопрос ...
FallenSoul
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #69 : 11-10-2006 14:24 » 

Должно рассматриваться вроде как всё что может быть, но как это осуществить... не понятно =\
Ведь допустим "ts" -это и "ц" и "т" "с". =\
Записан
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #70 : 11-10-2006 14:37 » 

Оооо, до такого глубокого анализа опускаться не стои т Ага. Я так понимаю ты первый курс, значит, как я думаю, препод ждет от тебя простую замену букв в соотношении один к одному, т.е. одна буква заменяется другой.
Если ты согласен, то я тут могу предложить два пути, может позже кто-то предложит что-то изящнее.
Первый - Это создается один массив, в котором будут буквы английского алфавита (по порядку)
Создаем второй массив, в котором буквы русского алфавита будет являться чем-то вроде массивом соответствий. Уточню на примере.
Вот массив английских букв-
arr_eng[]={'a','b','c','d','e','f'}
Тогда массив соответствий русских букв будет таким
arr_eng[]={"а","б","ц","д","е","ф"}
Пониаешь?
Второй метод, это создавать массивы-алфавиты, т.е. создать два массива один англ. букв, второй русских букв (в них буквы будут в том порядке, что и в алфавите), а потмо создать дополнительный массив - указатель, который будет уазывать какой букве английского алфавита, что соответсвует.
Устраивают тебя такие решения? Товарищи, может кто-то красивее путь к решению знает?
« Последнее редактирование: 14-12-2007 22:20 от Алексей1153++ » Записан

ещё один вопрос ...
Sands
Помогающий

ua
Offline Offline

« Ответ #71 : 11-10-2006 15:03 » new

Если б только с английского на русский, то можно было бы обойтись 1 массивом (только русские соответствия), а красивей решения, скорей всего, нету в алгоритмическом плане, а в программистском - там свобода творчества придумать можно многое Улыбаюсь
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #72 : 11-10-2006 15:38 » 

Ребят, сорри, что я вклиниваюсь - но тут проблема в другом. Рано вы за язык взялись.

FallenSoul, программирование - не есть знание языка, как ты себе это представляешь. Это в первую очередь чёткое представление задачи, необходимых действий и, в конечном итоге, построение алгоритма. На каком языке програмиирования, или с помощью каких языковых конструкций будет этот алгоритм реализован - второстепенная задача.

Поэтому начинать тебе надо не с cin и cout, а с простого описания действий. Вот когда они будут готовы - тогда их уже можно будет переводить на язык программирования.

Исходя из:
а глупо скатать готовый код не лучшее решение.
я делаю вывод, что ты не просто зачёт хочешь получить автоматом, а действительно хочешь заняться программированием, то давай с самого начала, просто по русски напиши действия необходимые для выполнения задачи (на С++ потом будем переводить - это самая быстрая и лёгкая часть), типа:

получить данные
проверить длинну данных
если размер данных равен 0 завершить программу
иначе ...

Короче представь себе, что компьютер ещё не изобрели, и тебе надо перевести некий текст ручками - с карандашом и бумажкой.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
FallenSoul
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #73 : 11-10-2006 17:46 » 

Препроцессорные директивы
обозначение переменных
обозначение кол-ва элементов массивов
главная функция
Выбор с какого на какой переводим 1)Рус->Eng 2) Eng->Рус
2 массива , элементы которых -буквы и их сочитания(sh-ш , ch-ч ...)
ввод переменных
проверка на соответствие переменных массиву
вывод соответствующих элементам первого массива, элементы второго массива на экран в порядке их ввода

=\ незнаю что еще можно добавить.
Записан
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #74 : 11-10-2006 20:43 » 

Цитата
Если б только с английского на русский, то можно было бы обойтись 1 массивом (только русские соответствия),
Так я в этот момент думал, а вдруг потом расширить придется Улыбаюсь
Записан

ещё один вопрос ...
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #75 : 11-10-2006 21:20 » 

Ага, значит решил еще и сочетани я впиндюрить.
Может тогда такие вещи хранить не в массиве, а в файле (про БД пока молчим, не будем спешить), тогда юзвер сам сможет редактировать транслит под свое усмотрение? Читать из файла не сложно.
Записан

ещё один вопрос ...
FallenSoul
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #76 : 12-10-2006 10:24 » 

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

Koshka

Koсхка
Кошка

?! =\
С русского на английский то попроще будет транслировать, на мой взгляд. 1 буква ведь будет иметь всего одно обозначение и сочитаний вроде как нет =\
Записан
Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #77 : 12-10-2006 11:01 » 

С русского на английский то попроще будет транслировать, на мой взгляд.
Вот ты и не ломай голову.
Напиши сначало программу которая будет транслировать с русского на английский. Этим ты попробуешь свои силы, увидешь основные части программы ну и будешь примерно представлять что к чему и какими способами это можно реализовать.
Записан
Sands
Помогающий

ua
Offline Offline

« Ответ #78 : 12-10-2006 11:14 » 

Ну раз дело уже дошло до файлов, тогда можно и map добавить, чтоб массивами не разбрасываться. А с мепом можно один мет для перевода и напрямую и обратно использовать
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #79 : 12-10-2006 12:17 » 

Нароооод стоп - какие файлы? Какой map? Человек 1,5 месяца программированием занимается!
Можт сразу с ООП начнём? Ага

Вот ты и не ломай голову.
Напиши сначало программу которая будет транслировать с русского на английский. Этим ты попробуешь свои силы, увидешь основные части программы ну и будешь примерно представлять что к чему и какими способами это можно реализовать.

Очень здравая мысль! FallenSoul, согласен? Всё делаем попорядку с английского на русский будем переводить в версии 2.0, а мы пока на 0.1

Идём дальше, ты всё пытаешься использовать язык программирования - нет ещё компьютера, нет процессора. Ок?

Теперь по твоим пунктам - ты сделал только план-конспект, а надо полностью раскрыть содержание.

Вот это существенно:

Выбор с какого на какой переводим 1)Рус->Eng 2) Eng->Рус
Давай подробней:

1. Получить информацию от пользователя, например это будет буква 'R' (всё остальное пока игнорируем)
2. Если данные равны 'R' выполнить трансляцию с русского на английский
иначе завершить программу

Цитата
проверка на соответствие переменных массиву
Тут я не понял, что ты хотел сказать-сделать? У тебя не хватает как минимум одного действия - самого алгоритма перевода, по какому принципу я должен менять данные? Может это оно?

Цитата
вывод соответствующих элементам первого массива, элементы второго массива на экран в порядке их ввода

Это всё общие слова - "соответствующих" - а надо конкретные действия:
что ты хочешь сделать? Например, пробежаться по всем элементам результата (это не обязательно должен быть массив, хотя скорее всего это будет именно он, но для программирования это не важно) и вывести каждый элемент на экран? Значит надо описать некое повторяющееся действие с условием остановки повторений. Продолжай ...
« Последнее редактирование: 14-12-2007 22:21 от Алексей1153++ » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
FallenSoul
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #80 : 12-10-2006 12:47 » 

Выбор с какого на какой переводим 1)Рус->Eng 2) Eng->Рус

выводим на экран сообщение которое включает в себя 2 варианта ответа
"Каким языком вводим слова?"

"R -rus "
"E -eng"

ждём пока пользователь введёт символьную константу R или E
После ввода выполняем проверку дальнейшего оператора ветвления
Если R -используем следующее тело.Открываем тело { делаем следущее
 { С русского на английский
  }
По завершению выполнения тела оператора ветвления, задерживаем результат и возможно какие то доп. действия ...
Иначе
 Если Е -используем тело ниже. Открываем и делаем следущее
 { С английского на русский
 }
#####
Выше еще один "блок" программы. Теперь рассмотрим тело функции с вводом русскими буквами и переводом на латиницу.
Тело функции с английского на русский пока оставим в покое ...

{ // Руск -> Англ.
 #Возможно автоматическое переключение на русскую раскладку?!#
 Ждём от пользователя ввода значений переменных   
 После того как все переменные нужные пользователю будут введены и нажат ентер:
   проверка значений введённых переменных
   если значение переменной = значению переменной в массиве с русскими буквами
   < if(a == a[i] ) >
      тогда выводим на экран элемент другого массива, с тем же номером , т.к. каждый элемент массива рус, привязан к элементу массива енг с тем же номером .
< eng[10]='f' >
< rus[10]='ф' >

...
сейчас убегаю ... приду-допишу . пока ошибок в логике нет?
« Последнее редактирование: 14-12-2007 22:24 от Алексей1153++ » Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #81 : 12-10-2006 13:49 » 

FallenSoul, Улыбаюсь  Вот никак ты не можешь абстрагироваться. Ок, начиная с этого момента можно использовать понятие "функция". Функция - это нечто получающее данные, произовдящее некие операции и возвращающее данные. Те у ф-ции есть имя, возвращаемое значение (это может быть и НИЧЕГО) и параметры (тоже может быть НИЧЕГО).

А вот чего я от тебя добиваюсь, то к чему я тебя хочу подвести, чтобы ты сам сделал:
некое повторяющееся действие с условием остановки повторений

Поэтому упростим задачу - надо показать введённые пользователем данные. Пользователь вводит данные, мы их показываем. Всё.

Ок я тоже вроде как на работе - вечером продолжим.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
FallenSoul
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #82 : 12-10-2006 15:40 » 

cout<<...

Так. У нас есть 2 массива с взаимносоответствующими элементами русенг и енгрус.
Надо писать цикл, который перебирает переменные, в котором будет еще один цикл, который перебирает значение этих переменных и в случае true ,выводит на экран их соответствующие другого массива...
Код:
Цикл с перебором переменных
  цикл перебора значения переменной
    если переменная == элементу массива[i] тогда
      выводим на экран элемент второго массива с тем же номером[i]
    закрываем тело оператора ветвления
   закрывает тело логического оператора for
закрываем тело логического оператора for
getch();

Что-то похожее на правду =\

из всего выше следует, что было бы неплохо задать нам 3ий массив, который будет включать в себя имена переменных. Можно так?
Код:
engrus[10]='f' -Это символьная константа
perem[1]=x  -Это переменная

?
« Последнее редактирование: 14-12-2007 22:32 от Алексей1153++ » Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #83 : 12-10-2006 15:55 » 

FallenSoul, я ещё на работе, но скоро убегаю.

Понимаешь само слово цикл - это есть действие. С чего ты взял, что цикл - это for? Причём тут логический оператор? Это всё не русский язык. Попробуй просто написать, что там происходит.

Вот сомтри: Программа "Свалить с работы"

начало
проверить наличие шефа
если шефа нет можно сваливать
иначе делай вид что работаешь

если можно сваливать открывай дверь
если дверь закрыта достань ключь, открой замок и открой дверь
иначе открой дверь

в последнем примере сразу видно, что алгоритм можно упростить (оптимировать) тк открывание двери происходит в обоих случаях

те я могу записать

если дверь закрыта достань ключь, открой замок
открой дверь

ну и тд

А теперь попробуй расписать задание простыми русскими словами, можно использовать функцию
типа:

повторять
   функция_ввод_элемента_данных
пока выполняется условие ...

Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
FallenSoul
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #84 : 12-10-2006 16:09 » 

в массиве заданы переменные. проверяем все эти переменные последовательно
  проверяем, подходит ли переменной те значения, которые стоят в массиве
    если хотябы одно значение этой переменной = значению которое обусловленно в массиве тогда
      ищем элемент с тем же номером в другом массиве и выводим его на экран.
    как только вывели это значение, прекращаем работать с этой переменной и идем далее
   как только вышли из предыдущего действия, прекращаем перебирать значения букв противоположного языка для этой переменной и идем далее
как только все элементы массива с переменными проверили, прекращаем перебор значений переменных

вроде так?! =\
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #85 : 12-10-2006 23:11 » 

FallenSoul, ок сделаем ещё проще. У тебя есть кто-нить рядом, кто сможет выполнить роль компьютера? Ну там, мама, папа, сестрёнка, друг какой-нить?

Дай ему эту "программу" и попроси выполнить (он должен выполнять написанные действия) её на листочке. Спрашивать тебя он не имеет права.

Вводные данные "привет", таблица соответствия

в - v
е - e
и - i
п - p
р - r
т - t

Как ты думаешь, он сможет это сделать? Я думаю - нет. Как минимум он спросит, а что такое "массив переменных"?

Потом, я всё ещё не вижу цикла, то, что ты отступы сделал, ещё не означает, что это цикл. Ты маскируешь всё в сложные фразы типа  "как только все элементы массива с переменными проверили, прекращаем перебор значений переменных".
Что значит "все элементы массива с переменными проверили"? Это же простое условие - так и запиши его.

НАпример что такое "перебор":

Код:
создать счётчик, который будет показывать порядковый номер элемента вводных данных
узнать размер данных, или число элементов
повторять
     получить из данных элемент с номером счётчик     
      сделать действие с этим элементом
     увеличить счётчик
пока выполняется условие - счётчик не больше количества элементов данных

Видишь, я не оговариваю - как именно я буду получать элемент данных с определённым номером - это для действия не важно, а в реальной программе зависит от типа данных, или структуры, которую мы выберем. Но для алгоритма действий это АБСОЛЮТНО не важно. Мы создаём идею, мысль, а на каком языке мы будем объяснять её компу - решим позже. Ведь у каждого языка есть свои преимущества и свои недостатки. Один лучше подходит для решения одной задачи, другой - для другой.

А так у тебя много лишних слов - ну что значит в программе "как только"? У условия может быть только два состояниями - выполнено-не выполнено. Или "перебор значений" - это же действие - значит надо его подробно описать? Откуда я знаю, что ты под этим понимаешь?

Кстати - я не требую от тебя, чтобы ты повторял всё слово в слово, пиши своими словами, как тебе удобно, как ты это понимаешь, НО! ты должен записать алгоритм - подробную последовательность действий. Ты пытаешься использовать языковые конструкции - "массив", "переменная" - зачем? Ну кто тебе сказал, что массив использовать удобней? А может это будет список? В первую очередь ты должен чётко и ясно представлять выполнение алгоритма. Именно с этим у тебя проблема - твоя программа просто мешанина ключевых слов языка С++. Как только ты научишься составлять алгоритмы, остальное приложится. Тогда ты будешь знать, что тебе требовать от языка. Что он должен уметь. А это справочная информация, которую все (ну или почти все) знают, и которая никому не интересна. Если бы программирование сводилось только к знанию языка, то какая-нибудь справочная система создавала бы безошибочные программы за считанные секунды, а мы бы переквалифицировались в управдомы.

Я понимаю - тебе хочется побыстрей увидеть результат. Это всегда так бывает. Но ты только начинаешь - 1,5 месяца это не срок. В дальнейшем тебе будет гораздо легче, если ты начнёшь правильно. Если ты научишься программировать, то ты сможешь это делать на любом языке.
Посмотри название своей темы - алгоритмические языки. Те решающим фактором является алгоритм. А языки могут быть разными. Конечно, когда программируешь несколько лет, то привыкаешь "думать" на языке программирования. Поэтому и общение программистов выглядит как обмен кодом - просто так короче, писать надо меньше и тд. А на самом деле за всей этой писаниной стоит "повторять пока не выполнится условие".
А переход с нормального человеческого языка на язык программирования очень прост. Те буквально каждую строчку мы будем переводить в языковые конструкции. Поэтому ОЧЕНЬ важно, чтобы ты мог сам создавать алгоритмы. Это основа программирования.

Может ещё проще сделаем? Напиши алгоритм распознавания пароля. Причём он должен работать след образом - ты записываешь на бумажке необходимые действия, даёшь её кому-нить прочитать, потом показываешь ему другую бумажку со словом "FallenSoul" и он должен сказать "зелёный". После этого ты показываешь другую бумажку, на которой написано "Джон", он должен сказать "красный". Ты не имеешь права что-нить объяснять, отвечать на вопросы (которых и быть не должно) и вообще говорить. Всё необходимые инструкции должны быть записаны (по возможности кратко и чётко, те с минимальным набором слов) на первой бумажке.
Я думаю с этим ты легко справишься. След. задание. Произнести по буквам показанное слово.
Вот этот алгоритм ты потом напишешь здесь для сурового разбора. Это будет первая часть алгоритма транслит.
Как только ты это усвоишь, дальше будут семечки. На самом деле это не сложно. Можешь сравнить это  с умением плавать или катанием на велосипеде. Пока ты это не умеешь, тебе кажется это сложным, почти не выполнимым. Тебе кажется, что чтобы не утонуть надо дрыгать и руками и ногами. Но как только научишься - это кажется тебе простым и лёгким. Кстати, отсюда следует вывод - этому тебя никто не сможет научить, этому ты можешь только сам научиться. Поэтому пробуй, экспериментируй. Чем больше ты будешь делать, тем скорее достигнешь результата.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
FallenSoul
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #86 : 13-10-2006 15:55 » 

Уже не понимаю тебя. Спасибо, но слишком уж отдалились от темы =\ я понимаю все принципы , но не на столь примитивных примерах непонимаю тебя...
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #87 : 13-10-2006 18:54 » 

Цитата: FailenSoul
Уже не понимаю тебя. Спасибо, но слишком уж отдалились от темы =\ я понимаю все принципы , но не на столь примитивных примерах непонимаю тебя...
Давай попробуем так:

У тебя есть бумажка, на которой записано некоторое слово латинскими буквами. У тебя есть колода карточек, на каждой карточке которой написано правило перевода буквы или последовательность букв латинского алфавита в букву или последовательность букв русского алфавита, например, "N -> H", "SH -> Ш", "X -> КС". У тебя есть карандаш и чистая бумажка, куда ты можешь записывать результат работы.

От тебя требуется при помощи карточек-правил перевести данное тебе слово, записанное латинскими буквами, в такое же слово, но записанное русскими буквами. Что ты будешь делать?
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #88 : 13-10-2006 19:25 » 

FallenSoul, от темы мы не удалились. Понимаешь, всё что мы (я) от тебя хотим, чтобы ты показал, что ты можешь создавать алгоритм, думать алгоритмически.
Пока я ещё этого не вижу. Жаль А то, что примеры примитивные - никто не спорит, но у тебя проблемы со "сложным" алгоритмом. Поэтому я тебе предложил парочку простых, как только ты прочувствуешь, как надо делать, сразу перейдём к сложным. Есть очень простой принцип - от простого к сложному.
А пока всё, что ты написал, не больше чем набор слов, а не чёткие указания.

Цитата
в массиве заданы переменные. проверяем все эти переменные последовательно
в каком массиве? причём тут массив? почему переменные заданы в массиве? что значит проверяем? что значит последовательно проверяем?

Примерно так будет думать интерпретатор подобной комманды.

Собственно всё что я от тебя хотел услышать в первом примитивном задании:

1. Жди, пока я не покажу бумажку
2. Прочитай слово написанное на бумажке
3. Если это слово "FallenSoul" скажи - "зелёный"
4. Если это слово "Джон" скажи - "красный"

dimka, предлагает сразу взять быка за рога. Я думаю, что это рановато, хотя можешь попробовать. Есть ещё один простой принцип, если хочешь что-то понять - объясни это другому. В данном случае показателем "правильности" твоего алгоритма будет точное выполнение, указанных тобой действий, кем-нибудь другим. Самое главное - ты не должен упустить ни одной мелочи.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
FallenSoul
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #89 : 14-10-2006 10:25 » 

Смотрим на слово
Выделяем первую букву этого слова
начинаем искать в стопке карточек ту, на которой написана эта буква
если нашли тогда смотрим на карточку и ищем на ней русскую букву которая соответсвует английской
если нашли тогда запоминаем её и записываем на листок бумаги
как только записали, раскладываем карточки опять в начальном порядке и смотрим на вторую букву слова
посмотрев и запомнив вторую букву слова начинаем её искать опять в стопке с карточками
если нашли-ищем на карточке русскую-если нашли тогда запоминаем и переписываем русскую букву сразу после первой на листе бумаги
раскладываем карточки в начальном порядке
опять рассматриваем слово
находим следующую букву если есть то всё по порядку как и выше
как только нашли и записали русскую букву, соответствующую последней букве английского слова смотрим
есть ли еще буквы в английском слове?
если есть-тогда продолжаем искать по буквенно
если больше нет, тогда заканчиваем поиск букв и их запись и смотрим на лист бумаги на котором написано слово русскими буквами
другими словами- выводим результат.

что касается сочитаний ... пока я придумал только один выход из сложившейся проблемы- после того как мы слово разбирём по буквам, то мы начинаем повторный разбор слова, но теперь уже учитываем согласование этих букв( сочитания ) и анализируем слово вновь. делаем аналогично первому алгоритму и полученное слово записываем на том же листе бумаги, чуть ниже первого.

вот.
Записан
Страниц: 1 2 [3] 4 5   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines