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

Пoмoгите со строковыми типами данных - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Обчисление введенной строки любого формата(пример:"(2+3)/4*2"или"2+3"или ...) http://www.cyberforum.ru/cpp-beginners/thread540080.html
Доброе время суток ! Если у когото есть такое код выложыте пожалуста,буду примного благодарен, или подскажыте какойто алгоритм или где решение найти(не нада писать гугл или чтото подобное). Умолительно прошу ...... Суть в том что сначала мы вводим выражение и нам нужно его посчитать!
C++ Найти количество положительных и количество отрицательное чисел в исходном наборе Здравствуйте еще раз...прошу помощи с задачей в С++] Условие Такое: Даны три целых числа. Найти количество положительных и количество отрицательное чисел в исходном наборе. http://www.cyberforum.ru/cpp-beginners/thread540062.html
C++ шифрование лозунгом
Есть алфавит abcdefg вводим лозунг def , конечный алфавит получается defabcg. К примеру если нужно зашифровать ced, то получится fba. Нужно сделать так: заменить буквы алфавита на буквы конечного алфавита и зашифровать слово. {a}={d} {b}={e} {c}={f} {d}={a} ........ лозунг может вводится любой. Этап составления конечного алфавита есть, а вот как заменять буквы а из них составлять слово...
C++ Нахождения корня р степени из а используя реккурентное выражение
Здравствуйте. На лабораторной попался такой вариант: http://savepic.su/1642399m.png Вот собственно набросал код: #include "stdafx.h" #include <conio.h> #include <stdio.h> #include <math.h>
C++ Дана строка символов http://www.cyberforum.ru/cpp-beginners/thread540041.html
Дана строка символов введенных с клавиатуры. Определить является ли введенный символ целым числом. (помогите)
C++ Считывание символов с файла. привет. задача состоит в том, что бы заполнить файл любыми символами, а потом там найти определенное слово. например в файле написано: пмапфроспидкубингофтфы. я ввожу в консоле слово "спидкубинг", и если оно есть в файле, программа мне его выводит на дисплей. если же нету - сообщение о том, что нету. я вот написал код, только не понимаю, почему не работает. да и задача вроде бы простая. ... подробнее

Показать сообщение отдельно
Deimon
35 / 35 / 2
Регистрация: 29.08.2009
Сообщений: 178
06.04.2012, 13:16     Пoмoгите со строковыми типами данных
Извиняюсь, не отладил как следует... моя ошибка.


изменения
-вынес проверку на размер буфера перед проверкой слова.
-проверка окончания. Проверяет возврат метода strstr(...) на значение NULL (Но я думал что в сулчае не нахождения окончания, матод должен был бы вернуть указатель на последний символ проверяемого слова
-"обнуление" переменной j вынесена в конец цикла на проверку слова

минусы
-проверяются слова учитывая регистр, поэтому находится будут только те что написаны с высоким регистром "ИЯ" , "ИКА", "ИСТ" ... слова с окончаниями "иЯ", "ия", "Ия", "иКа", "ика", "Ика", "икА" , "иКА", "ИКа", "ИкА", "ист", "Ист","ИСт", "иСТ", "исТ", "ИсТ" , "иСт" не будут выводиться.

теория
-делать проверку по каждому окончанию в одном if при помощи "ИЛИ" мне кажется не только не красивым, но и перебором. Могу прдложить создать отдельный массив строк с этими окончаниями и проверять возвращяемое значение методом strstr в еще одном вложенном цикле. Возможно есть аналог функции strstr, которая не обращяет внимание на регистр букв (но я такой не помню)
-интеррацияю перемнной j , не плохо было бы вытащить из цикла и вставить после [I]buffer[j] = text;, тогда не придется присваивать ей -1. Я говорил, что пишу некрасиво
-логическим окончанием слова считает " " или "," или ".". Это не всегда ведь верно, могу предложить вариант: вроде встречал метод, который проверяет символы на соответствие алфовитным буквам.


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
char buffer[15];// , text[100];
char text[] = " вот фурИЯ тахекардия это прикол, круто че?!";
 
 
for ( int i = 0, j = 0 ; i < sizeof(text) ; ++i, ++j )
{
    if (text[i] == ' ' || text[i] == ',' || text[i] == '.' || text[i] == '\0')
    {
        buffer[j] = '\0';
        if (j > 1)
        {
            if ( (strstr (&buffer[j-3],"ИЯ") != NULL) || (strstr(&buffer[j-3],"ИКА") != NULL) || (strstr(&buffer[j-3],"ИСТ") != NULL))
            {
 
                ShowMessage(buffer);
                //std::cout<<buffer<<endl;
            }
 
        }
        j=-1;
    }
    else
    {
        buffer[j] = text[i];
    }
 
}
Добавлено через 4 минуты
Цитата Сообщение от deadkill Посмотреть сообщение
с новой строки

C++
1
std::cout<<buffer<<endl;
Это из-за endl;
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru