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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2010, 20:11   #1
jambas92
Пользователь
 
Регистрация: 09.10.2010
Сообщений: 27
Печаль

Здравствуйте!!! нужно переобразовать код Морзе в большие англ буквы, я пробовал, но кажется я не правильно поставил "break", вот мой код:

Код:
#include <iostream>

using namespace std;

int main()
{
	char a[100];
	cin.getline(a, sizeof(a));
	char *ptr=a;
	int x=strlen(ptr);

	for (int i=0; i<x; i++)
	{
		if (a[i]=='.' && a[i+1]=='-')
		{
			cout << "A";
			break;
		}
		if (a[i+1]=='-' && a[i+2]=='.' && a[i+3]=='.' && a[i+4]=='.')
		{
			cout << "B";
			break;
			
		}
		if (a[i]=='-' && a[i+1]=='.' && a[i+2]=='-' && a[i+3]=='.')
		{
			cout << "C";
			break;
			
		}
		if (a[i]=='-' && a[i+1]=='.' && a[i+2]=='.')
		{
			cout << "D";
			break;
			
		}
		if (a[i]=='.')
		{
			cout << "E";
			break;
		}
		if (a[i]=='.' && a[i+1]=='.' && a[i+2]=='-' && a[i+3]=='.')
		{
			cout << "F";
			break;
		}
		if (a[i]=='-' && a[i+1]=='-' && a[i+2]=='.')
		{
			cout << "G";
			break;
		}
		if (a[i]=='.' && a[i+1]=='.' && a[i+2]=='.' && a[i+3]=='.')
		{
			cout << "H";
			break;
		}
		if (a[i]=='.' && a[i+1]=='.')
		{
			cout << "I";
			break;
		}
		if (a[i]=='.' && a[i+1]=='-' && a[i+2]=='-' && a[i+3]=='-')
		{
			cout << "J";
			break;
		}
		if (a[i]=='-' && a[i+1]=='.' && a[i+2]=='-')
		{
			cout << "K";
			break;
		}
		if (a[i]=='.' && a[i+1]=='-' && a[i+2]=='.' && a[i+3]=='.')
		{
			cout << "L";
			break;
		}
		if (a[i]=='-' && a[i+1]=='-')
		{
			cout << "M";
			break;
		}
		if (a[i]=='-' && a[i+1]=='.')
		{
			cout << "N";
			break;
		}
		if (a[i]=='-' && a[i+1]=='-' && a[i+2]=='-')
		{
			cout << "O";
			break;
		}
		if (a[i]=='.' && a[i+1]=='-' && a[i+2]=='-' && a[i+3]=='.')
		{
			cout << "P";
			break;
		}
		if (a[i]=='-' && a[i+1]=='-' && a[i+2]=='.' && a[i+3]=='-')
		{
			cout << "Q";
			break;
		}
		if (a[i]=='.' && a[i+1]=='-' && a[i+2]=='.')
		{
			cout << "R";
			break;
		}
		if (a[i]=='.' && a[i+1]=='.' && a[i+2]=='.')
		{
			cout << "S";
			break;
		}
		if (a[i]=='-')
		{
			cout << "T";
			break;
		}
		if (a[i]=='.' && a[i+1]=='.' && a[i+2]=='-')
		{
			cout << "U";
			break;
		}
		if (a[i]=='.' && a[i+1]=='.' && a[i+2]=='.' && a[i+3]=='-')
		{
			cout << "V";
			break;
		}
		if (a[i]=='.' && a[i+1]=='-' && a[i+2]=='-')
		{
			cout << "W";
			break;
		}
		if (a[i]=='-' && a[i+1]=='.' && a[i+2]=='.' && a[i+3]=='-')
		{
			cout << "X";
			break;
		}
		if (a[i]=='-' && a[i+1]=='.' && a[i+2]=='-' && a[i+3]=='-')
		{
			cout << "Y";
			break;
		}
		if (a[i]=='-' && a[i+1]=='-' && a[i+2]=='.' && a[i+3]=='.')
		{
			cout << "Z";
			break;
		}
		if (a[i]=='.' && a[i+1]=='-' && a[i+2]=='-' && a[i+3]=='-' && a[i+4]=='-')
		{
			cout << "1";
			break;
		}
		if (a[i]=='.' && a[i+1]=='.' && a[i+2]=='-' && a[i+3]=='-' && a[i+4]=='-')
		{
			cout << "2";
			break;
		}
		if (a[i]=='.' && a[i+1]=='.' && a[i+2]=='.' && a[i+3]=='-' && a[i+4]=='-')
		{
			cout << "3";
			break;
		}
		if (a[i]=='.' && a[i+1]=='.' && a[i+2]=='.' && a[i+3]=='.' && a[i+4]=='-')
		{
			cout << "4";
			break;
		}
		if (a[i]=='.' && a[i+1]=='.' && a[i+2]=='.' && a[i+3]=='.' && a[i+4]=='.')
		{
			cout << "5";
			break;
		}		
		if (a[i]=='-' && a[i+1]=='.' && a[i+2]=='.' && a[i+3]=='.' && a[i+4]=='.')
		{
			cout << "6";
			break;
		}		
		if (a[i]=='-' && a[i+1]=='-' && a[i+2]=='.' && a[i+3]=='.' && a[i+4]=='.')
		{
			cout << "7";
			break;
		}
		if (a[i]=='-' && a[i+1]=='-' && a[i+2]=='-' && a[i+3]=='.' && a[i+4]=='.')
		{
			cout << "8";
			break;
		}		
		if (a[i]=='-' && a[i+1]=='-' && a[i+2]=='-' && a[i+3]=='-' && a[i+4]=='.')
		{
			cout << "9";
			break;
		}	
		if (a[i]=='-' && a[i+1]=='-' && a[i+2]=='-' && a[i+3]=='-' && a[i+4]=='-')
		{
			cout << "0";
			break;
		}
	}
	return 0;
}
может в место break поставить i++, что бы он перескакивал к следущему условию???
тест такой:
вход:.. .. - ..- .. ... - .... . -... . ... - ..- -. .. ...- . .-. ... .. - -.-
выход:IITU IS THE BEST UNIVERSITY

Последний раз редактировалось Stilet; 13.11.2010 в 11:59.
jambas92 вне форума Ответить с цитированием
Старый 13.11.2010, 12:20   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Предлагаю написать поинтереснее:
Вести список ключей морзянки в массиве, и разбирая строку искать соответствия в нем:
Код:
// sdf.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <string>
using namespace std;

string морзянка="...-...---....-";
string азбука[4][2]={{"-...","B"},{"...","S"},{"---","O"},{".-","A"}};

int _tmain(int argc, _TCHAR* argv[])
{
	bool ok=false;
	for(int i=0;i<морзянка.length();){
		ok=false;
		for(int k=0;k<3;k++){
			string s;
			for(int l=0;((l+i)<морзянка.length())&&(l<азбука[k][0].length());l++) 
				s+=морзянка[l+i];
			if(азбука[k][0]==s){
				printf("%s",азбука[k][1].c_str());
				i+=азбука[k][0].length();
				ok=true;
				break;
			}
		}
		if(!ok) i++;
	}
    getchar();
	return 0;
}
Затык только в том что символы с большим количеством точек-тире должны стоять в массиве первыми, потому В у меня там на первом месте.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.11.2010, 09:16   #3
jambas92
Пользователь
 
Регистрация: 09.10.2010
Сообщений: 27
Радость ответ

спасибо конечно за помощь, но эту задачу я уже решил сам. спасибо за внимание)))
jambas92 вне форума Ответить с цитированием
Старый 14.11.2010, 11:32   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ну и младец
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Лексический анализатор азбуки Морзе в виде конечного автомата MrBrain Помощь студентам 1 08.11.2010 10:23
С# азбука морзе tinka13 Помощь студентам 1 08.05.2010 01:09
Перевод текста в код Морзе (Delphi) pomoshnic Помощь студентам 6 21.03.2009 18:04
Программа-кодировщик(или Морзе возвращается!) AsPeeD Помощь студентам 2 01.04.2008 18:41
компьютер издает какую-то азбуку морзе - один длинный и два коротких гудка и не грузиться совсем Красавчег))) Свободное общение 13 18.01.2008 04:27