Рубрики

Программа для печати последних N строк | Set-2

Учитывая несколько строк текста в одной строке, каждая строка отделяется символом '/ n'. Выведите последние N строк. Если количество строк меньше N, выведите все строки.

Подход к этой проблеме уже обсуждался в Set-1, где было напечатано только 10 строк. В этом посте обсуждается другой подход для печати последних N строк.

Алгоритм:

  • Разбейте строку вокруг '/ n', используя strtok .
  • Сохраните отдельные строки в векторе.
  • Вывести последние N строк из вектора.

Ниже приведена реализация вышеуказанного подхода:

C ++

// C ++ программа для печати последних N строк
#include <bits/stdc++.h>

using namespace std;

  

void PrintLast(string s, int t)

{

    // Вектор для хранения отдельных строк.

    vector<string> v;

  

    // Получить указатель на строку.

    char* str = &s[0];

    // Разделить строку вокруг '/ n'.

    char* token = strtok(str, "\n");

  

    // Сохраняем все строки в векторе.

    while (token) {

        v.push_back(token);

        token = strtok(NULL, "\n");

    }

  

    if (v.empty()) {

        cout << "ERROR: string doesn't contain '\\n' character\n";

        return;

    }

  

    // Если строка имеет t строк

    if (v.size() >= t) {

        for (int i = v.size() - t; i < v.size(); i++)

            cout << v[i] << endl;

    }

    else {

        for (int i = 0; i < v.size(); i++)

            cout << v[i] << endl;

    }

}

  
// Код драйвера

int main()

{

    string s1 = "str1\nstr2\nstr3\nstr4\nstr5\nstr6\nstr7\nstr8\nstr9"

                "\nstr10\nstr11\nstr12\nstr13\nstr14\nstr15\nstr16\nstr17"

                "\nstr18\nstr19\nstr20\nstr21\nstr22\nstr23\nstr24\nstr25";

    int n = 10;

    PrintLast(s1, n);

  

    return 0;

}

Джава

// Java-программа для печати последних N строк

import java.util.*;

  

class GFG 

{

    static void printLast(String s, int t)

    {

  

        // Вектор для хранения отдельных строк.

        // Сохраняем все строки в векторе.

        String[] v = s.split("\n");

  

        if (v.length == 0

        {

            System.out.println("ERROR: string doesn't "

                              "contain '\\n' character");

            return;

        }

  

        // Если строка имеет t строк

        if (v.length >= t) 

        {

            for (int i = v.length - t; i < v.length; i++)

            {

                System.out.println(v[i]);

            }

        

        else 

        {

            for (int i = 0; i < v.length; i++)

            {

                System.out.println(v[i]);

            }

        }

    }

  

    // Код драйвера

    public static void main(String[] args) 

    {

        String s1 = "str1\nstr2\nstr3\nstr4\nstr5\nstr6\nstr7"

                    "\nstr8\nstr9\nstr10\nstr11\nstr12\nstr13"

                    "\nstr14\nstr15\nstr16\nstr17\nstr18\nstr19"

                    "\nstr20\nstr21\nstr22\nstr23\nstr24\nstr25";

        int n = 10;

        printLast(s1, n);

    }

}

  
// Этот код предоставлен
// sanjeev2552

python3

# Python3 программа для печати последних N строк

def PrintLast(s, t): 

  

    # Вектор для хранения отдельных строк.

    v = s.split('\n')

      

    if len(v) == 0

        print("ERROR: string doesn't ",

              "contain '\\n' character\n"

        return

      

    # Если строка имеет t строк

    elif len(v) >= t: 

        for i in range(len(v) - t, len(v)): 

            print(v[i]) 

      

    else:

        for i in range(0, len(v)): 

            print(v[i])

      
Код водителя

if __name__ == "__main__":

  

    s1 = "str1\nstr2\nstr3\nstr4\nstr5\nstr6" + \

         "\nstr7\nstr8\nstr9\nstr10\nstr11" + \

         "\nstr12\nstr13\nstr14\nstr15\nstr16" + \

         "\nstr17\nstr18\nstr19\nstr20\nstr21" + \

         "\nstr22\nstr23\nstr24\nstr25"

      

    n = 10

    PrintLast(s1, n) 

  
# Этот код предоставлен Rituraj Jain

Выход:

str16
str17
str18
str19
str20
str21
str22
str23
str24
str25

Рекомендуемые посты:

Программа для печати последних N строк | Set-2

0.00 (0%) 0 votes