Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
live8
1 / 1 / 0
Регистрация: 10.02.2013
Сообщений: 24
#1

Выбрать слово из массива С++ - C++

10.02.2013, 21:31. Просмотров 1252. Ответов 24
Метки нет (Все метки)

Помогите пожалуйста!
Задача в чем: есть массив, в нем набор слов. Нужно выбрать к примеру 1 и 6 слово. Я понимаю что вроде это нужно сделать с помощью пробелов, ну никак не получается
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2013, 21:31
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Выбрать слово из массива С++ (C++):

Как выбрать одно слово из массива С++ - C++
Программа должна выбирать с файла в массив только одно слово после десятого пробела. А у меня выбирается весь текст что идет после 10...

Из введенной пользователем строки выбрать слово с заданным пользователем номером и вывести это слово на экран - C++
Здравствуйте. Если можете, помогите, пожалуйста, написать программу, которая выводит на экран из введенной пользователем строки слово с...

В тексте заменить слово А(любое слово) на слово В(любое слово). А и В разной длинны - C++
Не могу сообразить как написать программу: Пользователь вводит текст Необходимо замениь слово А(любое слово) на слово В(любое...

Выбрать элементы из массива - C++
подскажите, есть массив const char pass = { 'A','t','t','N','t','a','Q','6' }; необходимо выбрать из него определенные элементы... к...

Выбрать n максимальных элементов из массива - C++
Есть структура: struct data { /* какте-то поля */ uint32_t num; // Число }; есть массив этой структуры ...

достать слово из массива - C++
Делаю ftp клиент , после команды "LIST" сервер присылает список папок и файлов ввиде: drwxrwxrwx 1 user group 11 May 10 23:12 !!...

24
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
10.02.2013, 21:43 #2
Это получается массив, элементы которого - слова? Тогда так:
C++
1
2
char a[6][10]={"one", "two", "three", "four", "five", "six"};
std::cout<<a[0]<<" "<<a[5];
1
live8
1 / 1 / 0
Регистрация: 10.02.2013
Сообщений: 24
10.02.2013, 22:00  [ТС] #3
Я не правильно написал, мне нужно не вывести, а записать слова в массив из файла
Выглядит начало, я думаю, примерно так:
C++
1
2
3
4
5
6
7
8
9
char buffer[200];
int i=0, i2=0, a=0;
ifstream file("C:\\1.txt");
while(file.getline(buffer,200))
{
a=0;
while (buffer[i]!='\0')
{
if (buffer[i]==' ')
и дальше не могу придумать ничего
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
10.02.2013, 22:13 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <fstream>
#include <cstring>
int main()
{
     char str[10][20] = {0};
     int i = 0;
     std::ifstream f("1.txt");
     while(!f.eof())
        f.getline(str[i++],20);     
     for (int  j = 0; j<i; ++j)
          std::cout<<str[j]<<'\n';
     return 0;
}
Содержимое файла для примера:
Код
one
two
three
four
five
six
1
live8
1 / 1 / 0
Регистрация: 10.02.2013
Сообщений: 24
10.02.2013, 22:37  [ТС] #5
Спасибо! Только у меня содержимое файла выглядит примерно так:
C++ (Qt)
1
2
3
one two three four five six seven...
one two three four five six seven
one two three four five six seven
И нужно выбрать все первые слова, и все шестые. Слова все разные, и получается их выбрать можно только по пробелам? Как быть в такой ситуации?

Добавлено через 7 минут
Нужно вывести все первые слова, и все шестые из каждого столбика. То есть:
C++ (Qt)
1
2
3
one six
one six
one six
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
10.02.2013, 23:16 #6
Текст абсолютно произвольный? Т.е может быть такое, что 6-го слова может не быть? Или 1-го Что в таком случае делать? Знаки препинания любые?

Все первые и шестые в один массив записать?

Добавлено через 10 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <fstream>
#include <cstring>
int main()
{
     char str[10][20] = {0};
     int i = 0;
     std::ifstream f("1.txt");
     while(!f.eof())
     {
        char buf[100] = {0};  
        f.getline(buf,100);  
          char* p = strtok(buf," ,?!:-"); 
          strcpy(str[i++],p);
          for (int i = 0; i<5; ++i)
            p = strtok(NULL," ,?!:-");  
          strcpy(str[i++],p); 
     }
     for (int  j = 0; j<i; ++j)
          std::cout<<str[j]<<'\n';
     return 0;
}
Код
one1 two three four five six1 seven...
one2 two three four: five!six2 seven
one3, two three four. five six3 seven
one4 two three, four five six4 seven...
one5 two three four five six5 seven
one6, two three four five six6 seven
1
live8
1 / 1 / 0
Регистрация: 10.02.2013
Сообщений: 24
10.02.2013, 23:30  [ТС] #7
Нет, текст не произвольный. В каждой строчке есть определенное количество слов, там больше 10
Первым словом в строчке идет всегда имя пользователя, а шестым - адрес сайта. Эти все слова, даже их можно назвать набором букв, разделены пробелами
Ну можно записать и в разные, просто что бы потом можно было вывести на экран:
C++ (Qt)
1
2
3
"имя - адрес"
"имя - адрес"
и т.д.
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
10.02.2013, 23:32 #8
Ну, и? Код подошел? Или точный пример того, что в файле, если не подходит, и что вывести.
1
live8
1 / 1 / 0
Регистрация: 10.02.2013
Сообщений: 24
10.02.2013, 23:37  [ТС] #9
Уже хорошо, выводит только первое слово из каждой строчки, шестые - нет
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
10.02.2013, 23:39 #10
Конкретный пример файла сюда.
0
live8
1 / 1 / 0
Регистрация: 10.02.2013
Сообщений: 24
10.02.2013, 23:40  [ТС] #11
yura12 - 31.Jan.2013:09:11:59 +0200 /mrtg/images/la-day.png HTTP/1.1 "http://google.com/" "Mozilla/5.0 (Windows NT 5.1) (KHTML, like Gecko) Safari/537.11"
yura12 - 31.Jan.2013:09:11:59 +0200 /mrtg/images/la-day.png HTTP/1.1 "http://10.10.100.7/" "Mozilla/5.0 (Windows NT 5.1) (KHTML, like Gecko) Safari/537.11"

И должно получиться что-то такое:
C++ (Qt)
1
2
yura12 - [url]http://google.com[/url]
yura12 - [url]http://10.10.100.7[/url]
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
10.02.2013, 23:45 #12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <fstream>
#include <cstring>
int main()
{
     char str[10][300] = {0};
     int i = 0;
     std::ifstream f("1.txt");
     while(!f.eof())
     {
        char buf[300] = {0};  
        f.getline(buf,300);  
          char* p = strtok(buf," "); 
          strcpy(str[i++],p);
          for (int i = 0; i<6; ++i) // <--
            p = strtok(NULL," ");  
          strcpy(str[i++],p); 
     }
     for (int  j = 0; j<i; ++j)
          std::cout<<str[j]<<'\n';
     return 0;
}
Это просто нужно указать правильные разделители или позицию слова. Сейчас вроде правильно выводит. Но если нужно будет вывести другое слово, просто в отмеченном в коде месте по изменяйте число.
1
live8
1 / 1 / 0
Регистрация: 10.02.2013
Сообщений: 24
10.02.2013, 23:54  [ТС] #13
Спасибо большое!

Добавлено через 5 минут
Все равно выводит только первое слово у меня
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
11.02.2013, 00:39 #14
Проверил на dev-cpp, VS 2012, все работает.

Добавлено через 2 минуты
Правда, выводит чуть по-другому, но это несложно исправить:
Код
yura12
"http://google.com"
yura12
"http://10.10.100.7"
1
live8
1 / 1 / 0
Регистрация: 10.02.2013
Сообщений: 24
11.02.2013, 00:47  [ТС] #15
понял, скорее всего это из-за Borland 3.1
0
11.02.2013, 00:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2013, 00:47
Привет! Вот еще темы с ответами:

выбрать из массива данные лежащие в интервале - C++
здравствуйте. нужна помощь или совет. мне нужно сделать выборку из массива, чтобы в новом массиве были только те вещественные числа,...

Из массива выбрать четыре наибольших значения - C++
Дан массив фамилий студентов 1-го курса и массив их результатов в беге на 100 метров.Составьте команду из четырех лучших бегунов для...

Как выбрать 6 случайных елементов из массива - C++
Есть массив из 9 елементов как из него случайным образом выбрать 6?

Выбрать в обратном порядке определенные значения из массива - C++
Дано натуральное число n и целые числа a1,...an. Если в данной последовательности ни одно положительное число не расположено после...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru