Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2010, 14:13   #1
Mr.Boss
Пользователь
 
Регистрация: 06.06.2010
Сообщений: 13
По умолчанию строки из C++ в C#

Надо прочитать текст с файла и вывести на консоль предлжения в обратном порядке. Сам алгоритм работает на C++, а на C# компилятор ругается.

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Лабораторная_работа__5
{
    class Program
    {
        static void Main(string[] args)
        {
 
 
   
 
 
string str;
 
System.IO.StreamReader file =
    new System.IO.StreamReader(@"E:\Програмирование Практика\C#\Лабораторная работа №5\inp.txt");
 
while ((str = file.ReadLine()) != null)
{
    Console.WriteLine("Ishodniy tekst:");
    System.Console.WriteLine(str);
    Console.WriteLine("\n");
    Console.WriteLine("Predlozheniya s zapyatimi:");
    int p,z;
    int len = str.Length;
    int nach = 0, kon, j, nach1;
    
    bool l = true;
    while (l)
    {
        for (j = len; j >= nach; j--) if ((str[j] == '.') || (str[j] == '?') || (str[j] == '!'))
            { kon = j - 1; break; }
        for (p = kon;/*Здесь подчёркивает*/ p >= nach; p--) if ((str[p] == '.') || (str[p] == '?') || (str[p] == '!'))
            { nach1 = p + 1; break; }
 
        for (z = nach1; /*И здесь подчёркивает*/ z <= kon + 1; z++) Console.WriteLine(str[z]);
        if (len == nach1) { l = false; for (z = 0; z <= kon + 1; z++) Console.WriteLine(str[z]); }
 
        len = nach1;
    }
   
 
}
Console.ReadKey();
}    
}
}
Mr.Boss вне форума Ответить с цитированием
Старый 06.06.2010, 14:14   #2
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

хде ругается и как?
Carbon вне форума Ответить с цитированием
Старый 06.06.2010, 14:18   #3
Mr.Boss
Пользователь
 
Регистрация: 06.06.2010
Сообщений: 13
По умолчанию

В циклах ( я комментариями отметил . Компилятор не видет значения использующегося в последющем цикле, заданного в предыдущем)
Mr.Boss вне форума Ответить с цитированием
Старый 06.06.2010, 14:21   #4
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

kon и nach1 не инициализированы.
Carbon вне форума Ответить с цитированием
Старый 06.06.2010, 14:25   #5
Mr.Boss
Пользователь
 
Регистрация: 06.06.2010
Сообщений: 13
По умолчанию

НУ да, инициализированны! Посморти внеметельнее!
Mr.Boss вне форума Ответить с цитированием
Старый 06.06.2010, 14:26   #6
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Смотрю. Не вижу.
Carbon вне форума Ответить с цитированием
Старый 06.06.2010, 14:28   #7
Mr.Boss
Пользователь
 
Регистрация: 06.06.2010
Сообщений: 13
По умолчанию

int nach = 0, kon, j, nach1;

bool l = true;
while (l)
{
for (j = len; j >= nach; j--) if ((str[j] == '.') || (str[j] == '?') || (str[j] == '!'))
{ kon = j - 1; break; }
for (p = kon;/*Здесь подчёркивает*/ p >= nach; p--) if ((str[p] == '.') || (str[p] == '?') || (str[p] == '!'))
{ nach1 = p + 1; break; }

for (z = nach1; /*И здесь подчёркивает*/ z <= kon + 1; z++) Console.WriteLine(str[z]);
if (len == nach1) { l = false; for (z = 0; z <= kon + 1; z++) Console.WriteLine(str[z]); }

len = nach1;
}
Mr.Boss вне форума Ответить с цитированием
Старый 06.06.2010, 14:28   #8
Mr.Boss
Пользователь
 
Регистрация: 06.06.2010
Сообщений: 13
По умолчанию

тОЛЬКО НЕ ГОВОРИ, ЧТО ИМ НАДО ПРЕДАВАТЬ НУЛЕВЫЕ ЗНАЧЕНИЯ. эТО НЕ ВЕРНО!
Mr.Boss вне форума Ответить с цитированием
Старый 06.06.2010, 14:32   #9
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Цитата:
Сообщение от Mr.Boss Посмотреть сообщение
тОЛЬКО НЕ ГОВОРИ, ЧТО ИМ НАДО ПРЕДАВАТЬ НУЛЕВЫЕ ЗНАЧЕНИЯ. эТО НЕ ВЕРНО!
Скажу.

есть правило: все переменные перед использованием должны быть инициализированы.
т.е. компилятор должен отгадать, что в файле встретится символы: ((str[j] == '.') || (str[j] == '?') || (str[j] == '!')) ????
Carbon вне форума Ответить с цитированием
Старый 06.06.2010, 14:35   #10
Mr.Boss
Пользователь
 
Регистрация: 06.06.2010
Сообщений: 13
По умолчанию

Если предать нулевые значения предложения не выведутся!
Mr.Boss вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определять максимальную длину той части строки s, которая не содержит символы из строки s1. Александе еть я Общие вопросы C/C++ 5 13.04.2010 20:54
Удаление элементов строки s2 из строки s1 Ueshua Общие вопросы C/C++ 4 20.12.2009 13:06
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10
Строки. Как вывести часть строки? Anfall Общие вопросы Delphi 7 26.02.2009 09:10
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 02:27