Форум программистов, компьютерный форум CyberForum.ru

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

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

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

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

Помогите пожалуйста!
Задача в чем: есть массив, в нем набор слов. Нужно выбрать к примеру 1 и 6 слово. Я понимаю что вроде это нужно сделать с помощью пробелов, ну никак не получается
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2013, 21:31     Выбрать слово из массива С++
Посмотрите здесь:
C++ Как выбрать одно слово из массива С++
Из введенной пользователем строки выбрать слово с заданным пользователем номером и вывести это слово на экран C++
C++ В тексте заменить слово А(любое слово) на слово В(любое слово). А и В разной длинны
Выбрать элементы из массива C++
Выбрать n максимальных элементов из массива C++
выбрать из массива данные лежащие в интервале C++
Из массива выбрать четыре наибольших значения C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BumerangSP
4286 / 1408 / 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];
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]==' ')
и дальше не могу придумать ничего
BumerangSP
4286 / 1408 / 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
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
BumerangSP
4286 / 1408 / 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
live8
1 / 1 / 0
Регистрация: 10.02.2013
Сообщений: 24
10.02.2013, 23:30  [ТС]     Выбрать слово из массива С++ #7
Нет, текст не произвольный. В каждой строчке есть определенное количество слов, там больше 10
Первым словом в строчке идет всегда имя пользователя, а шестым - адрес сайта. Эти все слова, даже их можно назвать набором букв, разделены пробелами
Ну можно записать и в разные, просто что бы потом можно было вывести на экран:
C++ (Qt)
1
2
3
"имя - адрес"
"имя - адрес"
и т.д.
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
10.02.2013, 23:32     Выбрать слово из массива С++ #8
Ну, и? Код подошел? Или точный пример того, что в файле, если не подходит, и что вывести.
live8
1 / 1 / 0
Регистрация: 10.02.2013
Сообщений: 24
10.02.2013, 23:37  [ТС]     Выбрать слово из массива С++ #9
Уже хорошо, выводит только первое слово из каждой строчки, шестые - нет
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
10.02.2013, 23:39     Выбрать слово из массива С++ #10
Конкретный пример файла сюда.
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]
BumerangSP
4286 / 1408 / 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;
}
Это просто нужно указать правильные разделители или позицию слова. Сейчас вроде правильно выводит. Но если нужно будет вывести другое слово, просто в отмеченном в коде месте по изменяйте число.
live8
1 / 1 / 0
Регистрация: 10.02.2013
Сообщений: 24
10.02.2013, 23:54  [ТС]     Выбрать слово из массива С++ #13
Спасибо большое!

Добавлено через 5 минут
Все равно выводит только первое слово у меня
BumerangSP
4286 / 1408 / 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"
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2013, 00:47     Выбрать слово из массива С++
Еще ссылки по теме:
C++ Как выбрать 6 случайных елементов из массива
C++ достать слово из массива
C++ Из абсолютных величин элементов массива выбрать наибольшую
C++ Выбрать в обратном порядке определенные значения из массива
Выбрать числа из массива А с заданным остатком от деления на M C++

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

Или воспользуйтесь поиском по форуму:
live8
1 / 1 / 0
Регистрация: 10.02.2013
Сообщений: 24
11.02.2013, 00:47  [ТС]     Выбрать слово из массива С++ #15
понял, скорее всего это из-за Borland 3.1
Yandex
Объявления
11.02.2013, 00:47     Выбрать слово из массива С++
Ответ Создать тему
Опции темы

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