Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
1 / 1 / 0
Регистрация: 04.11.2010
Сообщений: 25
1

Необходимо перейти с С# на С++

04.03.2011, 23:44. Показов 731. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем! Начинаю изучать С++ вместе с С#. Пытаюсь преобразовать следующий код в С++...Нужно вывести три предложения из текста в обратном порядке.Что наработал:

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
using System;
using System.Text;
 
 
class Program
{
 
    static void Main(string[] args)
    {
        Console.WriteLine("=========================================================");
        Console.Write("Введите адрес файла: ");
        string file_name = Convert.ToString(Console.ReadLine());
        Console.WriteLine("----------------------------------------------------------");
        System.IO.StreamReader f = new System.IO.StreamReader(file_name, Encoding.GetEncoding("windows-1251"));
        string s = "", str = "";
        int count = 0;
        while (((s = f.ReadLine()) != null) && count < 3)
        {
            char[] ch = s.ToCharArray();
            foreach (char c in ch)
            {
                if (c != '.' && c != '!' && c != '?')
                    str += c;
                else
                {
 
                    if (count >= 3)
                        break;
                    ++count;
                    MyMetod(str, count);
                    str = "";
 
                }
            }
 
        }
        f.Close();
        Console.ReadLine();
    }
    static void MyMetod(string s, int i)
    {
        Console.WriteLine("\n\n =========Предложение № {0}=========== \n {1}", i, s);
        Console.WriteLine("\n\n =========В обратном порядке слов===== \n ");
        string[] split = s.Split();
        for (int j = split.Length - 1; j > 0; --j)
            Console.Write(split[j] + " ");
    }
 
}
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
#include<conio.h>
#include<string>
#include<stdlib.h>
#include<stdio.h>
#include<iostream>
#include<fstream>
 
using namespace std;
 
    static void Main()
 
    {
        setlocale (LC_ALL, "Russian");
        FILE *file;
        file=fopen("1.txt","r");
        cout <<"Исходный текст:"<<endl;
        if (file==NULL) puts("error");
        int count = 0;
        string s = "", str = "";
        while ((file!= NULL) && count < 3)
        {
            char ch[] = "";
            for each (char c in ch)
 
            {
                if (c != '.' && c != '!' && c != '?')
                    str += c;
                else
                {
 
                    if (count >= 3)
                        break;
                    ++count;
                    MyMetod(str, count);
                    str = "";
 
                }
            }
 
        }
        fclose(file);
    }
    static void MyMetod(string s, int i)
    {
        cout<<"\n\n =========Предложение № "<<i<<"=========== \n"<<endl;
        cout<<"\n\n =========В обратном порядке слов===== \n "<<endl;
        string split [] = s.Split();
        for (int j = split.Length - 1; j > 0; --j)
          cout<<split[j]<<" "<<endl;
    }
Ругается на Split и length и ещё на что то... ... не могу подобрать аналоги... подскажите?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.03.2011, 23:44
Ответы с готовыми решениями:

как на паскале сделать "перейти к следуючему" "перейти к предыдучему"
Написать проогррамму в которой описывается массив записей ,хранящий следующую информацию :ФИО...

Необходимо добавить проверку введенных значений а и b. Если введены не числа то необходимо выводить сообщение
вот задачка, но ее надо дописать var a = prompt(&quot; введите число&quot;, &quot;&quot;); var b = prompt(&quot; введите...

необходимо сделать так: редактирую ячейку DataGridView и при НОВОМ недопустимом значении, необходимо вернуть ячейке старое значение
Но как это сделать? То есть ест таблица DataGridView, ячейки в ней заполнены некоторым образом; их...

Необходимо обклеить стенку размером a*b обоями; сколько рулонов необходимо, чтобы обклеить всю стену?
Написать программму для следующего условия : необхдимо обклеить стенку размером a*b обоями размер...

6
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
05.03.2011, 00:02 2
mrproz, С++ это вам не шарп, маин с маленькой буквы, а length это метод, а не свойство + массивы объявляются по-другому. Откройте литературу, почитайте или на МСДН
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
05.03.2011, 00:02 3
Maxwe11, Ну и мейн статик резона нет делать.
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
05.03.2011, 01:11 4
В C++ нет стандартной функции split. Есть strtok, есть строковые потоки, на их основе можно написать нечто подобное.
1
ForEveR
05.03.2011, 01:12
  #5

Не по теме:

rangerx, Ну или буст юзать. Но ТС-у скорее всего сие не подойдет.

0
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
05.03.2011, 08:57 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
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/////////////////////////////////////////////////////////////////////////////////////////
//Нужно вывести три предложения из текста в обратном порядке.
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <fstream>
#include <iostream>
#include <locale>
#include <sstream>
#include <string>
#include <vector>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string         T_str;
typedef std::vector<T_str>  T_words;
/////////////////////////////////////////////////////////////////////////////////////////
void  check_file
    (
        const std::ifstream&  file,
        const T_str&          filename
    )
{
    if(!file) 
    {
        std::cerr << "Невозможно открыть файл \"" 
                  << filename 
                  << "\""
                  << std::endl;
        exit(EXIT_FAILURE);
    }    
}
/////////////////////////////////////////////////////////////////////////////////////////
void  remove_firs_sentence_and_print_backward(T_str&  text)
{
    T_str::size_type  point_symb_pos = text.find_first_of(".?!"); 
    if(point_symb_pos == T_str::npos)  return;
    T_str  sentence = text.substr(0, point_symb_pos);
    text.erase(0, point_symb_pos + 1);
    std::istringstream  isstream(sentence);
    T_words  sentence_words(
                               ( std::istream_iterator<T_str>(isstream) ),
                               ( std::istream_iterator<T_str>()         ) 
                           );    
 
    std::copy(
                 sentence_words.rbegin  (), 
                 sentence_words.rend    (), 
                 std::ostream_iterator<T_str>(std::cout, " ")
             );
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
 
    const T_str  FILE_NAME = "1.txt";
    std::ifstream  file("1.txt");
    check_file(file, FILE_NAME); 
 
    std::ostringstream  osstream;    
    osstream << file.rdbuf();
    T_str  text = osstream.str();
    
    struct  T_spacesymb_to_space
    {
        char  operator()(char  symb)
        {
            return  std::isspace(symb, std::locale("")) ? ' ' : symb;
        }
    };
    std::transform(text.begin(), text.end(), text.begin(), T_spacesymb_to_space());
    
    std::cout << "Исходный текст:"
              << std::endl
              << text
              << std::endl;
    
    const int    SENTENCES_TOTAL  = 3;
    const int    LINE_LEN         = 51;
    const T_str  LINE(T_str(LINE_LEN, '=') + '\n');    
    for(int  i = 0; i < SENTENCES_TOTAL; ++i)
    {
        std::cout << std::endl
                  << std::endl
                  << LINE
                  << '\t'
                  << "Предложение № " 
                  << i + 1
                  << " в обратном порядке:"
                  << std::endl
                  << LINE;
 
        remove_firs_sentence_and_print_backward(text);
        std::cout << std::endl
                  << std::endl;
    }
}
1
1 / 1 / 0
Регистрация: 04.11.2010
Сообщений: 25
05.03.2011, 11:35  [ТС] 7
Спасибо всем! буду разбираться! =)
0
05.03.2011, 11:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.03.2011, 11:35
Помогаю со студенческими работами здесь

Хочу перейти на c++
Собственно сабж. Сейчас я программирую на Delphi. Что понравилось в delphi и почему начал с него:...

Созрел перейти на Си
Созрел перейти на Си. Накидайте, плиз, литературы, желательно с примерами проектов на AVR, типа Си...

Как перейти к
Вот код. #include &lt;iostream.h&gt; #include &lt;windows.h&gt; int main() { int a,b,c,d; cout &lt;&lt;...

на что перейти
собственно вот. сижу на делфи 7. думаю стоит ли ставить версию выше? если да то что советуете?

Хочу перейти с хр на 7
Здравствуйте стоит windows xp,хочу поставить windows 7 надо ли будет перед установкой 7 удалять хр...

С++ или перейти на С#?
Проблема такая: требуется создать мобильное приложение к концу этого года. На 1 курсе в предыдущем...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru