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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2015, 12:51   #1
MaxJV
Новичок
Джуниор
 
Регистрация: 11.03.2015
Сообщений: 4
По умолчанию Написать функцию, которая ограничивает ввод символов

Напишите пожалуйста функцию, которая ограничивает ввод символов, например, если я ввожу цифры, чтобы программа выдавала ошибку!

Последний раз редактировалось MaxJV; 11.03.2015 в 12:58.
MaxJV вне форума Ответить с цитированием
Старый 11.03.2015, 13:10   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вводишь куда?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.03.2015, 13:16   #3
Aleksander550
Форумчанин
 
Регистрация: 07.01.2014
Сообщений: 124
По умолчанию

Код:
bool is_num(char s){
 if (s >= '0' && s <= '9'){
  cout << "/nError";
  return true;
  }
return false;
}

char input(){
 char c;
 do{
   cin >> c;
 }while(is_num(c));
 return c;
}
#define TRUE FALSE //счастливой отладки
Aleksander550 вне форума Ответить с цитированием
Старый 11.03.2015, 15:21   #4
MaxJV
Новичок
Джуниор
 
Регистрация: 11.03.2015
Сообщений: 4
По умолчанию Вот в этот код

Цитата:
Сообщение от Stilet Посмотреть сообщение
Вводишь куда?
Код:
#include "stdafx.h"
#include <iostream>
#include <map>
#include <string>
#include <fstream>
#include <locale>
#include <cstdlib>
#include <sstream>
#include <algorithm>
#include <fstream>
#include <windows.h>
using namespace std;

int main()
{
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);
	
	ifstream in("words.txt");
	
	string s1, s2;
	map <string, string> words;

	while (in >> s1 >> s2)
	{
		words[s1] = s2;
		words[s2] = s1;
	}

	words["asd"] = "ffff";

	in.close();
	//-------------------------------------------------------------

	while (true)
	{
		cout << "Введите слово на английском или на русском которое хотите перевести, "
			"или write чтобы дополнить словарь (для выхода - q): ";

		cin >> s1;
		
			if (s1 == "q") return(0);
			
		if (s1 == "write")
		{
			string wrd, trn;
			FILE *file;

			if ((file = fopen("words.txt", "a")) == NULL)
			{
				printf("Файл невозможно открыть\n");
				continue;
			}
			else
			{
				cout << "Введите слово на английском: ";
				cin >> wrd;
				cout << "Введите перевод: ";
				cin >> trn;

				fprintf(file, "%s%c%s%c", wrd.c_str(), ' ', trn.c_str(), '\n');

				words[wrd] = trn;
				words[trn] = wrd;
			}
			cout << "Слово и перевод записаны" << endl;

			fclose(file);
		}
		else
		{
			if (words.find(s1) != words.end())
				cout << "Перевод слова: " << words[s1] << endl;
			else
				cout << "В словаре этого слова не найдено" << endl;
		}
	}

	system("pause");
	return 0;
}

Последний раз редактировалось Stilet; 11.03.2015 в 16:33.
MaxJV вне форума Ответить с цитированием
Старый 11.03.2015, 16:02   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Вот в этот код
не надо так!!!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 11.03.2015, 16:36   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я бы сделал функцию проверки:
Код:
bool verify(string s){
 int i=0;
 for(i;i<s.length();i++) if(s[i]>='0' && s[i]<='9') return false;
 return true;
}
соответственно:
Код:
do{
 cout<<"Введите строку правильно:"; cin>>s1;
}while(verify(s1));
Это в качестве идеи.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.03.2015, 23:03   #7
MaxJV
Новичок
Джуниор
 
Регистрация: 11.03.2015
Сообщений: 4
По умолчанию

А куда это вставлять надо?
MaxJV вне форума Ответить с цитированием
Старый 11.03.2015, 23:21   #8
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Я бы сделал функцию проверки:
Код:
bool verify(string s){
 int i=0;
 for(i;i<s.length();i++) if(s[i]>='0' && s[i]<='9') return false;
 return true;
}
соответственно:
Код:
do{
 cout<<"Введите строку правильно:"; cin>>s1;
}while(verify(s1));
Это в качестве идеи.
Выше вас написали точно такой же код)

Код:
#include "stdafx.h"
#include <iostream>
#include <map>
#include <string>
#include <fstream>
#include <locale>
#include <cstdlib>
#include <sstream>
#include <algorithm>
#include <fstream>
#include <windows.h>
using namespace std;

bool verify(string s){
 int i=0;
 for(i;i<s.length();i++) if(s[i]>='0' && s[i]<='9') return false;
 return true;
}

int main()
{
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);
	
	ifstream in("words.txt");
	
	string s1, s2;
	map <string, string> words;

	while (in >> s1 >> s2)
	{
		words[s1] = s2;
		words[s2] = s1;
	}

	words["asd"] = "ffff";

	in.close();
	//-------------------------------------------------------------

	while (true)
	{
		cout << "Введите слово на английском или на русском которое хотите перевести, "
			"или write чтобы дополнить словарь (для выхода - q): ";

		do{
                    cout<<"Введите строку правильно:"; cin>>s1;
                   }while(verify(s1));
		
			if (s1 == "q") return(0);
			
		if (s1 == "write")
		{
			string wrd, trn;
			FILE *file;

			if ((file = fopen("words.txt", "a")) == NULL)
			{
				printf("Файл невозможно открыть\n");
				continue;
			}
			else
			{
				cout << "Введите слово на английском: ";
				cin >> wrd;
				cout << "Введите перевод: ";
				cin >> trn;

				fprintf(file, "%s%c%s%c", wrd.c_str(), ' ', trn.c_str(), '\n');

				words[wrd] = trn;
				words[trn] = wrd;
			}
			cout << "Слово и перевод записаны" << endl;

			fclose(file);
		}
		else
		{
			if (words.find(s1) != words.end())
				cout << "Перевод слова: " << words[s1] << endl;
			else
				cout << "В словаре этого слова не найдено" << endl;
		}
	}

	system("pause");
	return 0;
}
Вот так...

Последний раз редактировалось Stilet; 12.03.2015 в 07:51.
Praud вне форума Ответить с цитированием
Старый 11.03.2015, 23:35   #9
MaxJV
Новичок
Джуниор
 
Регистрация: 11.03.2015
Сообщений: 4
По умолчанию

Не работает =(
MaxJV вне форума Ответить с цитированием
Старый 12.03.2015, 00:31   #10
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Как-то недавно для фриланса писал подобный ограничитель. Здесь можно вводить всё, что угодно, но не более 5 символов. И, да, написано на паскале
Код:
uses crt;

var
	c: char;
	i: byte;

begin
	repeat
		c:=readkey;
		
		if (i < 5) and (c <>#8) then begin
			inc(i);
			write(c);
		end;
		
		if (c = #8) AND (i > 0) then begin
			write(c);		
			
			write(#0);
			write(c);
			dec(i);
		end;
		
		
	until c = #13;
end.
Вадим Мошев вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать функцию, которая заполняет список из массива drerek Помощь студентам 1 05.12.2014 08:14
Функцию, которая принимает в качестве параметра строку и символ и вычисляет количество таких символов в строке (Delphi) Loqwer78rus Помощь студентам 10 06.05.2014 10:52
Написать функцию, которая находит наименьший элемент дерева. Aligasanov Помощь студентам 1 05.12.2013 15:22
программа, которая вводит строки текста в массив символов s[100], используя функцию gets. stalker999 Общие вопросы C/C++ 8 10.04.2012 19:58