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

Удалить из строки предпоследнее и последнее слово в с++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создать масив с двоичным поиском. http://www.cyberforum.ru/cpp-beginners/thread527594.html
Помоги реализовать ,вот есть сам код двоичного поиска,нашел как реализовать без шаблонов,а надо с шаблоном. template<class Key> int binSearch(Key*array,int low,int high,const Key&key){ while(low<high){ int middle=(low+high)/2; if(array>=key) high=middle;else low=middle +1; } return array==key ? low : -1; }
C++ Таблицы и графики Visual C++ Здравствуйте! Не могу разобраться, как использовать DataGridView и Chart в Visual C++. Задача элементарная, в таблицу со столбцами p1 и p2 вывести значения, которые рассчитывает программа. Их же дублировать на гистограмму. Не нахожу как обращаться к ячейкам и столбцам(. Может у кого есть решенная подобная задача? http://www.cyberforum.ru/cpp-beginners/thread527582.html
C++ Объединение двух массивов
Написать программу, которая объединяет два упорядоченных по возрастанию массива в один, также упорядоченный массив.
Сформировать массив путем слияние двух других C++
помогите,пожалуйста,решить! Задан массив A из N элементов и массив B из M элементов. Сформировать массив L из массивов A и B путем их слияния так, чтобы сначала располагались все элементы массива A, а затем все элементы массива B. Значения N и M ввести с клавиатуры, а массивы A и B сформировать из случайных чисел в диапазоне от 0 до 100 Добавлено через 59 минут помогите решить ее.очень нужно...
C++ Рекурсивный обход двумерного массива http://www.cyberforum.ru/cpp-beginners/thread527530.html
Здравствуйте! Не могу составить алгоритм рекурсивного обхода двумерного массива. Например есть массив: 1 2 2 0 1 1 1 2 2 , выбираем произвольную точку, скажем это = 1, то нужно проверить все окружающие его числа, и если они больше чем 0, то увеличить счетчик. Мне нужно алгоритм только для случая, если выбранная тока находится по центру, и у него проверяемых чисел 8. Было бы классно с...
C++ среднее арифметическое Написать программу которая вычисляет среднее арифметическое элементов массива без учета минимального и максимального элементов массива. Для доступа к элементам массива использовать указатель на указатель. подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
26.03.2012, 09:33     Удалить из строки предпоследнее и последнее слово в с++
Duha666, ну а у меня совсем другие результаты.

Код с fgets:

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
#include <stdio.h>
 
#define SIZE 10000
#define CNT 1000000
int main(int argc, char* argv[])
{
    char buf[SIZE];
    size_t i;
    FILE* in;
    FILE* out;
    
    if(argc != 2)
    return 1;
 
    if((in = fopen(argv[1], "r")) == NULL)
    return 1;
    
    out = fopen("/dev/null", "w");
 
    for(i = 0; i < CNT; ++i)
    {
    fputs(fgets(buf, SIZE, in), out);
    rewind(in);
    }
    
    return 0;
}
Код с ifstream::getline:
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
#include <iostream>
#include <fstream>
 
#define SIZE 10000
#define CNT 1000000
 
int main(int argc, char* argv[])
{
    std::ifstream in;
    std::ofstream out;
 
    size_t i;
 
    char buf[SIZE];
    
    if(argc != 2)
    return 1;
    
    in.open(argv[1], std::ios::in);
 
    if(!in)
    return 1;
 
    out.open("/dev/null", std::ios::out);
 
    for(i = 0; i < CNT; ++i)
    {
    in.getline(buf, SIZE);
    out << buf;
    in.seekg(0, std::ios::beg);
    }
}
Результаты теста:
Код
[nameless@desktop c]$ cat /dev/urandom | tr -dc A-Za-z | head -c 9999 > input.txt
[nameless@desktop c]$ wc -c input.txt 
9999 input.txt
[nameless@desktop c]$ make
gcc -O3    -c -o main.o main.c
gcc -o sample -lm main.o
[nameless@desktop c]$ /usr/bin/time -p ./sample input.txt 
real 2.87
user 1.47
sys 1.38
[nameless@desktop c]$ cd ../cpp/
[nameless@desktop cpp]$ make
g++ -c -O3  main.cc
g++ -o sample  main.o
[nameless@desktop cpp]$ /usr/bin/time -p ./sample ../c/input.txt
real 4.77
user 3.25
sys 1.49
[nameless@desktop cpp]$ uname -a
Linux desktop 3.3.0-4.fc16.x86_64 #1 SMP Tue Mar 20 18:05:40 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
[nameless@desktop cpp]$ gcc --version | head -n 1
gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2)
Как видишь, разница меньше, чем в два раза.

Цитата Сообщение от Duha666 Посмотреть сообщение
Если существует шанс некорректных данных, то нужно всегда это учитывть.
шанс есть всегда, и с функцией gets ты его учесть никак не сможешь.
 
Текущее время: 09:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru