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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2011, 09:15   #1
Novichel
 
Регистрация: 08.03.2011
Сообщений: 7
Восклицание Обработка текста в C++

Задание такое: Выдать на экран слово, соответствующее номеру, введенному с клавиатуры.

Посчитать слова я смог, а вот как дальше....

Код:
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <iostream>
#include <locale.h>
using namespace std;
int _tmain()
	{ setlocale(LC_ALL,"rus");
char s[255];
cout<<"Введите строку: ";
gets(s);
int a,b,i;
a=0;
b=0;
for (i=0;i<strlen(s)-1;i++)
 if ((s[i]==' ') && (s[i+1]!=' '))
  a=a+1;
if (s[0]!=' ')
    a=a+1;
cout<<"В веденной строке слов: "<<a<<endl;
_getch();
return 0;
}
Novichel вне форума Ответить с цитированием
Старый 14.04.2011, 09:33   #2
Damnar
Пользователь
 
Регистрация: 27.03.2011
Сообщений: 12
По умолчанию

жаль времени протестить нет, но смысл, я думаю Вам будет понятен:
слово = массив символов, причем так как слово вводиться с клавиатуры - массив должен быть динамическим, то есть сначала создаете массив указателей на массив указателей на сивмол, и в цикле загоняете туда каждое слово, потом при обращении по индексу вам будет выдаваться слово под этим номером. А еще лучше каждое слово представить как класс или структуру и создать массив указателей на этот класс или структуру
Damnar вне форума Ответить с цитированием
Старый 14.04.2011, 10:55   #3
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

а еще проще, видимо, сделать это при помощи string и итераторов...
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 14.04.2011, 14:50   #4
Novichel
 
Регистрация: 08.03.2011
Сообщений: 7
По умолчанию

Все равно не пойму, очень прошу, помогите с кодом....
Novichel вне форума Ответить с цитированием
Старый 14.04.2011, 15:12   #5
malinoff
Форумчанин
 
Аватар для malinoff
 
Регистрация: 08.01.2010
Сообщений: 205
По умолчанию

Можно слова считывать в двумерный массив - под каждое слово выделять строку, слова разделять, например, пробелом. То есть, после ввода пробела с клавиатуры индекс строк увеличивать на единицу. Тогда номер, введенный с клавиатуры будет индексом строки, в которой находится искомое слово.
Если помог - кликни на значок весов под аватаром.
malinoff вне форума Ответить с цитированием
Старый 14.04.2011, 19:25   #6
Alinko-malinko
Новичок
Джуниор
 
Регистрация: 14.04.2011
Сообщений: 9
По умолчанию

Если создавать двумерный массив, то непонятно на какое количество слов рассчитывать...
Пробел означает что слово закончилось, значит, после к-го пробела начинается (к+1) слово
Alinko-malinko вне форума Ответить с цитированием
Старый 14.04.2011, 19:36   #7
malinoff
Форумчанин
 
Аватар для malinoff
 
Регистрация: 08.01.2010
Сообщений: 205
По умолчанию

Цитата:
Сообщение от Alinko-malinko Посмотреть сообщение
Если создавать двумерный массив, то непонятно на какое количество слов рассчитывать...
Пробел означает что слово закончилось, значит, после к-го пробела начинается (к+1) слово
Выделяйте память динамически
Если помог - кликни на значок весов под аватаром.
malinoff вне форума Ответить с цитированием
Старый 14.04.2011, 19:46   #8
Novichel
 
Регистрация: 08.03.2011
Сообщений: 7
По умолчанию

Что-то я совсем запутался напишите хотя бы код вывода слова....((
Novichel вне форума Ответить с цитированием
Старый 14.04.2011, 20:08   #9
Alinko-malinko
Новичок
Джуниор
 
Регистрация: 14.04.2011
Сообщений: 9
По умолчанию

malinoff

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


Novichel
Если дойдут руки, я отправлю. У меня даже компилятора на данный момент нет.
Тебе какраз и осталось написать код вывода слова под считаным номером=)
Alinko-malinko вне форума Ответить с цитированием
Старый 14.04.2011, 20:18   #10
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Цитата:
Сообщение от Alinko-malinko Посмотреть сообщение
можете привести пример как сделать эту часть? Из пар по Си я вынесла следующую инфу: сначала выделяешь память под указатель (по сути), а потом по нему из каких-то соображений выделяешь память под вполне определённый массив, его размеры можно вводить по ходу выполнения кода. Так вот, если нет никаких ограничений на количество слов, то какой же размер вводить?
Можно, например, выделить массив для 1000 слов; если не хватит - использовать функцию realloc для выделения большего количества.
Son Of Pain вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка текста C++ jack-fighter Помощь студентам 4 24.12.2010 23:56
Обработка текста DOC26 Помощь студентам 1 23.10.2010 13:25
Обработка текста JRcoker Общие вопросы Delphi 5 31.07.2008 23:35
обработка текста pvleo Фриланс 4 14.07.2008 05:19
Обработка текста GAGARIN-NEW Общие вопросы Delphi 7 06.10.2007 15:25