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

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

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

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

10.02.2013, 21:31. Просмотров 1203. Ответов 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
11.02.2013, 00:59 #16
Цитата Сообщение от live8 Посмотреть сообщение
из-за Borland 3.1
Скорее! Еще бы. Это же каких годов там компилятор.
0
booker
23 / 23 / 2
Регистрация: 21.11.2012
Сообщений: 106
11.02.2013, 11:40 #17
потоками гороздо проще, чем через strtok()

Добавлено через 1 час 6 минут
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include<fstream>
#include<string>
#include<vector>
#include <conio.h>
 
using namespace std;
 
int main (){
 
    vector<string> words;
    string one;
    string two;
    string dump;
    ifstream in ("c:\\file.txt");
    while(in)
    {
        in>>one>>dump>>dump>>dump>>dump>>two;
        words.push_back(one);
        words.push_back(two);
    }
 
    vector<string>::iterator iter;
    for(iter=words.begin();iter!=words.end();iter++)
        cout<<*iter<<" ";
 
 
    for(;!kbhit(););
 
    return 0;
}
1
live8
1 / 1 / 0
Регистрация: 10.02.2013
Сообщений: 24
11.02.2013, 20:36  [ТС] #18
Ну мне через strtok более понравилось. Еще нужна помощь. В файле, например, текст:
192.168.1.100 - [1.Jan.2012:09:11:59 +0200] "GET /mrtg/images/day.png HTTP/1.1" 200 1802 "http://google.com/" "Mozilla/5.0 (Windows NT 5.1) (KHTML, like Gecko) Chrome/23.0.1271.97"
192.168.1.100 - [1.Jan.2012:09:11:59 +0200] "GET /mrtg/images/day.png HTTP/1.1" 200 2803 "http://google.com/" "Mozilla/5.0 (Windows NT 5.1) (KHTML, like Gecko) Chrome/23.0.1271.97"
192.168.1.101 - [1.Jan.2012:09:11:59 +0200] "GET /mrtg/images/day.png HTTP/1.1" 200 1475 "http://google.com/" "Mozilla/5.0 (Windows NT 5.1) (KHTML, like Gecko) Chrome/23.0.1271.97"

У меня выводит:
C++ (Qt)
1
2
3
192.168.1.100 - 1802
192.168.1.100 - 2803
192.168.1.101 - 1475
А нужно что бы цифры суммировало, и выводило так:

C++ (Qt)
1
2
192.168.1.100 - 4605
192.168.1.101 - 1475
Помогите пожалуйста.
0
booker
23 / 23 / 2
Регистрация: 21.11.2012
Сообщений: 106
11.02.2013, 21:58 #19
Ну мне через strtok более понравилось. Еще нужна помощь.
Есле бы вы потрудились и попробовали разобраться в предоставленных вам примерах, то помомощь вам бы уже не понадобилась
0
live8
1 / 1 / 0
Регистрация: 10.02.2013
Сообщений: 24
11.02.2013, 22:06  [ТС] #20
Не получается у меня именно суммировать числа для одного ip. Пол дня уже просидел и никак
0
booker
23 / 23 / 2
Регистрация: 21.11.2012
Сообщений: 106
11.02.2013, 23:14 #21
каков всё таки закон суммирования, поподробнее опишите, не понятно.

Добавлено через 56 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <iostream>
#include<fstream>
#include<string>
#include<vector>
#include <conio.h>
 
using namespace std;
 
double CharToDouble(const char* ch)
{
    return atof(ch);
};
 
struct ip_set{
    string ip;
    int number;
};
 
int main (){
 
    vector<ip_set> data;
    ip_set* temp=new ip_set;
    string one;
    string two;
    string dump;
    ifstream in ("c:\\file.txt");
    while(in)
    {
        in>>one>>dump>>dump>>dump>>dump>>dump>>dump>>dump>>two>>dump>>dump>>dump>>dump>>dump>>dump>>dump>>dump>>dump;
        temp->ip=one;
        temp->number=CharToDouble(two.c_str());
 
 
        data.push_back(*temp);
        
    }
 
    // сортировка
    
        int it1,it2;
    for (it1 = 0;it1!=data.size();it1++)
        for (it2 = it1+1;it2!=data.size();it2++)
            if(data[it1].ip==data[it2].ip){
                data[it1].number=data[it1].number+data[it2].number;
                data.erase(data.begin()+it2--);}
 
        //вывод
    
        vector<ip_set>::iterator iter;
    
    for(iter=data.begin();iter!=data.end();iter++)
        cout<<iter->ip<<" - "<<iter->number<<endl;
 
 
    for(;!kbhit(););
 
    return 0;
}
1
live8
1 / 1 / 0
Регистрация: 10.02.2013
Сообщений: 24
11.02.2013, 23:29  [ТС] #22
Спасибо! Все правильно работает
0
booker
23 / 23 / 2
Регистрация: 21.11.2012
Сообщений: 106
11.02.2013, 23:30 #23
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include<fstream>
#include<string>
#include<vector>
#include <conio.h>
 
using namespace std;
 
int CharToInt (const char*ch)
{
    return atoi (ch);
}
 
struct ip_set{
    string ip;
    int number;
};
 
int main (){
 
    vector<ip_set> data;
    ip_set* temp=new ip_set;
    string one;
    string two;
    string dump;
    ifstream in ("c:\\file.txt");
    while(in)
    {
        in>>one>>dump>>dump>>dump>>dump>>dump>>dump>>dump>>two>>dump>>dump>>dump>>dump>>dump>>dump>>dump>>dump>>dump;
        temp->ip=one;
        temp->number=CharToInt(two.c_str());
        if(in.eof())break;
        data.push_back(*temp);
        
    }
        
    vector<ip_set>::iterator iter;
        
    // сортировка
    int it1,it2;
    for (it1 = 0;it1!=data.size();it1++)
        for (it2 = it1+1;it2!=data.size();it2++)
            if(data[it1].ip==data[it2].ip){
                data[it1].number=data[it1].number+data[it2].number;
                data.erase(data.begin()+it2--);}
 
    //вывод
    for(iter=data.begin();iter!=data.end();iter++)
        cout<<iter->ip<<" - "<<iter->number<<endl;
 
 
 
    for(;!kbhit(););
 
    return 0;
}
подправил
1
live8
1 / 1 / 0
Регистрация: 10.02.2013
Сообщений: 24
11.02.2013, 23:38  [ТС] #24
Только получается такая ситуация, что когда в одной из строчек присутствуют еще какие-то слова, например пару слов разделенных пробелами, то после этой строчки естественно дальше выводит набор символов, а не ip и размер. То есть получается сдвиг
0
booker
23 / 23 / 2
Регистрация: 21.11.2012
Сообщений: 106
11.02.2013, 23:50 #25
алгоритм рассчитан на стандартные строки, либо стандартизируйте строки, либо ищите другой алгоритм. как вариант попробуйте regexЫ освоить.
1
11.02.2013, 23:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2013, 23:50
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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