Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2011, 23:45   #1
Lanka1
Новичок
Джуниор
 
Регистрация: 10.02.2011
Сообщений: 9
По умолчанию Строки.Напечатать все слова, содержащие по одной цифре.

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

И еще если кто знает по такой задаче:
Написать функцию для удаления строки из двумерного массива. Строки, оставшиеся должны быть расположены плотно, недостающие элементы заменяются 0. С помощью разработанных функций исключить из массива строки с номерами от А до В.
Не получается написать,что б сдвигалось несколько строк именно выбраных.
Новичок в с++.
Lanka1 вне форума Ответить с цитированием
Старый 10.02.2011, 23:48   #2
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

хоть какие-то идеи, заготовки программ есть?
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 10.02.2011, 23:50   #3
Lanka1
Новичок
Джуниор
 
Регистрация: 10.02.2011
Сообщений: 9
По умолчанию

Код:
#include<iostream.h>
#include<string.h>

void main()
{
	char a[150];
	char b[25]="";
	char c[150]="";
	cout<<"Vvedite stroky:";
	cin.getline(a,150);
	int n=strlen(a);
	for (int i=0;i<=n;i++)
	{
	if (a[i]==' '|| a[i]=='\0') 
	{
	strcpy(b,a);
	for(int j=0; j<25; j++)
	{
		if (b[j]=='0'||'1'||'2'||'3'||'4'||'5'||'6'||'7'||'8'||'9')
		{
				strcpy(c,b);
				strcpy(c," ");
			    
		}
	strcpy(b,"");
	cout<<"\nSlova: "<<c;
	}
	}
	}
}
Пока не получается...голова уже не варит.Скажите какие ошибки.

Да и так много идей,не могу именно правильный алгоритм этого перебора составить.

Последний раз редактировалось Stilet; 11.02.2011 в 17:47.
Lanka1 вне форума Ответить с цитированием
Старый 10.02.2011, 23:58   #4
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

Цитата:
Сообщение от Lanka1 Посмотреть сообщение
Напечатать все слова, содержащие по одной цифре.
Помогите с этой задачей.
дай конкретней задание
Цитата:
Или хотя бы как проверить так,что б нашло цифру и только одну?
берешь слово + его длину далее цикл ну и проверяешь какая буква равна не тексту
wm_leviathan вне форума Ответить с цитированием
Старый 11.02.2011, 00:03   #5
Lanka1
Новичок
Джуниор
 
Регистрация: 10.02.2011
Сообщений: 9
По умолчанию

Цитата:
Сообщение от wm_leviathan Посмотреть сообщение
дай конкретней задание
Заданна строка, состоящая из символов. Символы объединяются в слова. Слова друг от друга отделяются одним или несколькими пробелами. В конце текста ставится точка. Текст содержит не более 255 символов. Выполнить ввод строки, используя функцию Gets (s) и обработку строки согласно своему варианту.Вариант собственно: Напечатать все слова, содержащие по одной цифре.

как-то так
Lanka1 вне форума Ответить с цитированием
Старый 11.02.2011, 00:29   #6
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Цитата:
b[j]=='0'||'1'||'2'||'3'||'4'||'5'||'6' ||'7'||'8'||'9'
Так нельзя писать. Это вообще не то делает. Можно писать b[j]=='0' || b[j]=='1' || ... Но, между нами, есть isdigit().

Цитата:
void main()
А так нельзя писать по стандарту.

Цитата:
#include<iostream.h>
#include<string.h>
а тут .h не надо.

Так ты же C++ изучаешь, используй string что ли. Ну и прочие полезные плюшки, например тот же is_digit().
Код:
std::string str = "aa43a1123";
std::cout << std::count_if(str.begin(), str.end(), isdigit) << std::endl;
Выведет 6.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 11.02.2011, 00:30   #7
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

Код:
#include <iostream>

using namespace std;

inline bool isNumber(char&a){
	switch(a){
		case '0':case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8':case '9':return true;
		default:return false;
	}
}

inline bool isAlpha(char&a){
	if ((a>='a')&&(a<='z')) return true;
	if ((a>='A')&&(a<='Z')) return true;
	return false;//да, такие вот дела, для русских делать лень
}

void coutSlovo(char*text,int&a,int&b){
	for (int i=a;i<=b;i++)
		cout<<text[i];
}

int main(){
	char text[256]={0};
	gets(text);//считываем строку
	int strl=strlen(text);
	int num;
	for (int i=0;i<strl;i++){
		num=0;
		if (isAlpha(text[i])){//если число - входит в алфавит английский
			for (int j=i+1;j<strl;j++){//идем дальше по строке
				if (isNumber(text[j])) num++;
				if (text[j]==' '){
					if (num==1)
						coutSlovo(text,i,j){;//выводим с i по j символы
						i=j;
					}
				}
			}
		}
	}
}
ваша задача - распихать все это аккуратно по функциям, я почапал спать, программу не проверял, в теории должно работать

точно, а я голову ломаю - как же ж та функция звалась которая проверяет на число
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 11.02.2011, 00:38   #8
Lanka1
Новичок
Джуниор
 
Регистрация: 10.02.2011
Сообщений: 9
По умолчанию

спасибо всем.
не про isdigit и половины этого не знала.
всего лишь первый семестр в техникуме.
Lanka1 вне форума Ответить с цитированием
Старый 11.02.2011, 01:08   #9
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

kaljan775, и у тебя программа на C практически. Вот другое дело:
Код:
#include <iostream>
#include <algorithm>
#include <string>
#include <sstream>
#include <vector>
#include <iterator>

void printIfContainsOneDigit(std::string &str)
{
    if(std::count_if(str.begin(), str.end(), isdigit) == 1) {
        std::cout << str << std::endl;
    }
}

int main()
{
    std::string str;
    std::getline(std::cin, str);
    std::cout << std::endl;

    std::vector<std::string> words;
    std::istringstream istr(str);
    copy(std::istream_iterator<std::string>(istr),
            std::istream_iterator<std::string> (),
            std::back_inserter<std::vector<std::string> >(words));
         
    for_each(words.begin(), words.end(), printIfContainsOneDigit);
}
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su

Последний раз редактировалось Obey-Kun; 11.02.2011 в 01:12.
Obey-Kun вне форума Ответить с цитированием
Старый 11.02.2011, 01:30   #10
Lanka1
Новичок
Джуниор
 
Регистрация: 10.02.2011
Сообщений: 9
По умолчанию

мы char учим,а не string.
если чесно,все,что написали для меня почти не понятно.
мы вот учим на уровне,как написала я код.вот как-то так.
Lanka1 вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
напечатать все слова , отличные от последнего слова Julila Помощь студентам 1 07.01.2011 23:34
найти все клики содержащие 4 вершины samazvanka Помощь студентам 0 01.06.2010 19:55
Файлы. Удалить слова, содержащие латинские символы. ddeman666 Помощь студентам 3 20.04.2010 09:06
все слова с нечетным количеством букв подходят для "ёлочной" рекурсии. Все буквы слова расположены в форм no_to Помощь студентам 0 04.01.2010 16:06
Как удалить все строки в Excel содержащие.. Dux Microsoft Office Excel 15 11.09.2009 04:41