Профил
Loading...
Elena123456 avatar Elena123456 235 Точки

1. Odd Lines- Lab: Streams, Files and Directories

Здравейте,

опитвам се да реша първата задача от Лаба, но не със стриймове, както трейнъра показва, а чрез използването на класа File. Искам максимално добре да се науча да се възползвам от готовите функционалностти на езика, защото съм убедена, че свободното време на програмиста е оскъдно и ценно.

Условие- https://softuni.bg/trainings/resources/officedocument/52727/streams-files-and-directories-lab-csharp-advanced-september-2020/3007

Write a program that reads a text file and writes it's every odd line in another file. Line numbers starts from 0.

Имам създадени нови два текстови файла и са точно там където се стартира програмата (при .exe fail), като успявам да чета информация от единия, но не и да презапиша нечетните редове в другия файл. Втория файл си остава празен.

Моля за помощ!

 

using System;
using System.IO;

namespace OddLines
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] text = File.ReadAllLines("OddLines.txt");
            for (int i = 0; i < text.Length; i++)
            {
                if (i % 2 != 2)
                {
                    File.WriteAllText("OddLinesAnother.txt",text[i]);
                }
            }
        }
    }
}

Тагове:
1
C# Advanced 13/01/2021 17:32:25
krum_43 avatar krum_43 714 Точки

                            Здравей Елена,   

 

По принцип остатъците по модул 2 са 0 и 1?

Може би проверката дали итератора е нечетен би трябва да е:       if(i%2=1) ?!?      

1
15/01/2021 06:44:13
Elena123456 avatar Elena123456 235 Точки

Thanks a lot to both of you! 

In the first case with "File" my mistake is- "i%2!=2" (with i%2!=0 is not working too), but in the second case with StreamRider and StreamWriter, I used to i%2==1 for odd lines and is not working too. 

I did everything from the video step by step, but without any result.

I will try Axiomatik's solution with absolute path.

In another forum somebody said that my logic with StreamReader and StreamWriter is correct, but maybe the problem is in my input file with too much spaces and new lines, and the program skiped the logic. Is that possible?

if Axiomatic's solution doesn't work on my PC I would unistal my Office packages and install different version. smiley

 

 

0
14/01/2021 11:58:30
Elena123456 avatar Elena123456 235 Точки

Yes, is working correctly with my new Notepad++ and absolute path.angel

@Axiomatik

thank you so much!

 

using System;
using System.IO;

namespace OddLines
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var reader = new StreamReader(@"C:\Users\eli\Desktop\AllMyRepos\CSharp-Advanced\StreamsFilesAndDirectories-Lab\OddLines\input.txt"))
            {
                using (var writer = new StreamWriter(@"C:\Users\eli\Desktop\AllMyRepos\CSharp-Advanced\StreamsFilesAndDirectories-Lab\OddLines\output.txt"))
                {
                    int counter = 0;
                    while (!reader.EndOfStream)
                    {
                        var line = reader.ReadLine();
                        if (counter % 2 == 1)
                        {
                            writer.WriteLine(line);
                        }

                        counter++;
                    }
                }
            }
        }
    }
}

 

1
Axiomatik avatar Axiomatik 2078 Точки

Super, but it should also work with VS.

Best,

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.