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

Строковые С++,неправильная работа функции - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
artproo
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 18
11.01.2012, 19:02     Строковые С++,неправильная работа функции #1
Доброго времени,не правильно работает функция zad2,огромная просьба помочь в решении!Заранее спасибо
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/*задача №1.    Написать и протестировать функцию подсчёта слов, начинающихся с конкретной буквы, в строке. 
задача №2.  Ввести строку, слова в которой разделены пробелами и запятыми. 
Распечатать эту строку, удалив из нее те слова, которые встретились в ней более одного раза
*/
#include<iostream>
using namespace std;
#include"Rus.h"
#define _USE_MATH_DEFINES
#include<math.h>
#include<time.h>
#include<string.h>
int zad1(char* str,char N);
int zad2(char* str);
 
int zad1(char* str,char N)
 
{
int i,S=0;
for(i=0;str[i]!=0;i++)
//if(str[i]==N)//jgg
if(str[i]==' ')
    {
        if(str[i+1]==N)
        {
        S++;
        
        for(;str[i]!=32;i++);
        }
    }
return S;
}
///////////////////////////////////////////
[COLOR="Red"]//Преподаватель что алгоритм в корне не правильный,хелп!!!форумчане помогите доработать данную функцию[/COLOR]
int zad2(char* str)
{ 
    char* sl=new char[80];
    char* k;
    int i=0;
    int in;
    int ik; 
    int n=strlen(str);
    int j=0;
    while(i<n)
    {
        in=i;
        while(str[i]!=' ' && i<strlen(str))
        {
            sl[j]=str[i];
            i++;
            j++;
        }
    ik=i;
    sl[j]='\0';
    k=strstr(str, sl);
    if(k!=NULL)
    strcpy(k,k+strlen(sl));
    i=ik+1;
    }
delete []sl;
return 0;
}
//////////////////////////////
int main(void)
{
 
int S, G;
char N, str[80];//, str1[80];
cout<<Rus("введите строку: ");
cin.getline(str,80);
cout<<Rus("введите букву: ");
cin>>N;
S=zad1(str,N);
cout<<S;
//cin.getline(str1,80);
G=zad2(str);
cout<<endl;
cout<<Rus("результат: ")<<str<<endl;
//cout<<S;
return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2012, 19:02     Строковые С++,неправильная работа функции
Посмотрите здесь:

C++ неправильная работа с массивом структур
Неправильная работа с файлами C++
Неправильная работа с русскими символами C++
Неправильная работа программы C++
Условие цикла Иф,неправильная работа иф C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
11.01.2012, 19:54
  #2

Не по теме:

Цитата Сообщение от artproo Посмотреть сообщение
не правильно работает функция zad2
Как функцию назовёшь, так она и заработает...

artproo
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 18
11.01.2012, 20:05  [ТС]     Строковые С++,неправильная работа функции #3
да это конечно забавно,но есть комментарии по существу?
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
11.01.2012, 20:25     Строковые С++,неправильная работа функции #4
Цитата Сообщение от artproo Посмотреть сообщение
Распечатать эту строку, удалив из нее те слова, которые встретились в ней более одного раза
Я не представляю себе, как сделать это задание без использования контейнера или хотя бы связного списка. На каждое слово заново парсить строку?
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
11.01.2012, 20:45     Строковые С++,неправильная работа функции #5
задание 2
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
11.01.2012, 20:50     Строковые С++,неправильная работа функции #6
Array of pointers width predefined size is fine too.
vetal10
35 / 35 / 5
Регистрация: 25.05.2010
Сообщений: 211
11.01.2012, 21:01     Строковые С++,неправильная работа функции #7
можно с помощью stl.
C++
1
2
3
4
5
#include <iterator>
#include <cstring>
void zad2(std::string s){
copy(s.begin(),unique(s.begin(),s.end()),std::ostream_iterator(cout," "));
}
artproo
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 18
11.01.2012, 21:53  [ТС]     Строковые С++,неправильная работа функции #8
спасибо за ответы!
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
12.01.2012, 01:48     Строковые С++,неправильная работа функции #9
Цитата Сообщение от vetal10 Посмотреть сообщение
можно с помощью stl.
Так не получится. Попробуйте рабочий пример привести.

Цитата Сообщение от artproo Посмотреть сообщение
есть комментарии по существу?
А то!
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
#include <iostream>
#include <string>
#include <sstream>
#include <list>
#include <algorithm>
#include <iterator>
 
int main(){
    std::string buf;
    
    while ( std::cout << "String: " && std::getline(std::cin, buf) && ! buf.empty() ){
        std::replace(buf.begin(), buf.end(), ',', ' ');
    
        std::list<std::string> list;
        std::istringstream ist(buf);
        while ( ist >> buf )
            if ( std::find(list.begin(), list.end(), buf) == list.end() )
                list.push_back(buf);
    
        std::ostringstream ost;
        std::copy(list.begin(), list.end(), std::ostream_iterator<std::string>(ost, ", "));
        std::cout << "Unique words: " << std::string(ost.str(), 0, ost.str().length() - 2) << std::endl;
    }
    
    return 0;
}
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
12.01.2012, 03:20     Строковые С++,неправильная работа функции #10
мм std::set же
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
12.01.2012, 03:28     Строковые С++,неправильная работа функции #11
Цитата Сообщение от OstapBender Посмотреть сообщение
мм std::set же
И как добиться, чтобы слова в том же порядке шли? В принципе можно, конечно, но выглядеть ещё страшнее будет...
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
12.01.2012, 03:43     Строковые С++,неправильная работа функции #12
easybudda, хз... ток щас увидел что set хранит всё в сортированном виде :)
vetal10
35 / 35 / 5
Регистрация: 25.05.2010
Сообщений: 211
12.01.2012, 15:20     Строковые С++,неправильная работа функции #13
easybudda,
вот я попробовал написать пример но выдает вот такую ошибку
Код
Error	1	error C2679: binary '=' : no operator found which takes a right-hand 
operand of type 'char' (or there is no acceptable conversion)
	c:\program files\microsoft visual studio 10.0\vc\include\xutility	
2144	1
	chek
вот сам код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iterator>
#include <cstring>
#include <algorithm>
#include <iostream>
 
void zad2(std::string s){
copy(s.begin(),unique(s.begin(),s.end()),
std::ostream_iterator<std::string>(std::cout," "));
}
int main(){
std::string str="bla bla fd dhkwe ew";
zad2(str);
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2012, 17:39     Строковые С++,неправильная работа функции
Еще ссылки по теме:

Неправильная работа цикла C++
C++ Неправильная работа деструктора

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

Или воспользуйтесь поиском по форуму:
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
12.01.2012, 17:39     Строковые С++,неправильная работа функции #14
Цитата Сообщение от vetal10 Посмотреть сообщение
std::ostream_iterator<std::string>(std::cout," ")
это для того чтобы откомпилилось
C++
1
std::ostream_iterator<char>(std::cout," ")
но применять std::unique нужно к отсортированой последовательности
Yandex
Объявления
12.01.2012, 17:39     Строковые С++,неправильная работа функции
Ответ Создать тему
Опции темы

Текущее время: 01:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru