• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zadanie c++ napisy

Object Storage Arubacloud
0 głosów
1,512 wizyt
pytanie zadane 21 maja 2018 w C i C++ przez SzaaBao Początkujący (380 p.)

Hej mam takie zadanie:

W pliku napisy.txt znajduje się 200 wierszy, z których każdy zawiera dwa napisy o długości od 1 do 50 znaków, oddzielone pojedynczym odstępem. Napisy składają się wyłącznie z małych liter alfabetu angielskiego. Napisz program (lub kilka programów), który pozwoli rozwiązać poniższe zadania. Odpowiedzi zapisz w pliku wyniki.txt.

1.

Oblicz, w ilu wierszach jeden (którykolwiek) z napisów jest przynajmniej trzy razy dłuższy od drugiego.
Jako odpowiedź wypisz liczbę takich wierszy oraz parę napisów z pierwszego z nich.

2.

Znajdź (i wypisz) wszystkie takie wiersze pliku, w których drugi napis da się otrzymać z pierwszego przez dopisanie na jego końcu pewnej dodatniej liczby liter (na przykład kot i kotara). Dla każdego wiersza podaj oba znajdujące się w nim napisy, a osobno wypisz litery, które należy dopisać.

Zadanie 1 juz zrobiłem, zostało mi 2. Do tej pory napisałem to:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{

    string s1[200],s2[200];
    ifstream napisy;
    napisy.open("napisy.txt");
    {

        for(int i=0; i<200; i++)
        {
            napisy>>s1[i];
            napisy>>s2[i];
        }
        for(int i=0; i<200; i++)
        {
            if(s1[i].length()>s2[i].length())
            {
                bool git=true;
                for(int j=0; j<s1[j].length(); j++)
                if(s1[j]!=s2[j])
                git=false;
                if (git)
                {
                    cout<<s1<<s2;
                }

            }

        }


    }
    napisy.close();
    return 0;
}

Problem leży tu, że po wystartowaniu programu nic mi nie wypisuje. Co radzicie? 

2 odpowiedzi

0 głosów
odpowiedź 21 maja 2018 przez chucksqll Stary wyjadacz (12,930 p.)

Pomijam kwestię

Oblicz, w ilu wierszach jeden (którykolwiek) z napisów jest przynajmniej trzy razy dłuższy od drugiego.

Gdzie ty patrzysz czy jest po prostu dłuższy.

Wydaje mi się, że ta pętla jest problemem.

        for(int i=0; i<200; i++)
        {
            if(s1[i].length()>s2[i].length())
            {
                bool git=true;
                for(int j=0; j<s1[j].length(); j++)
                if(s1[j]!=s2[j])
                git=false;
                if (git)
                {
                    cout<<s1<<s2;
                }
 
            }
 
        }

która powinna wyglądać tak: (brak klamer po for'ze powoduje, że instrukcja po pierwszym if;ie nie będzie wykonywana w pętli.

        for(int i=0; i<200; i++)
        {
            if(s1[i].length()>s2[i].length())
            {
                bool git=true;
                for(int j=0; j<s1[j].length(); j++)
                {
                	if(s1[j]!=s2[j])
                	git=false;
                	if (git)
            		{
                    	cout<<s1<<s2;
                	}
                }
 
            }
 
        }

 

komentarz 21 maja 2018 przez SzaaBao Początkujący (380 p.)

Próbowałem już z klamrami i bez i nadal nie wypisuje sad

0 głosów
odpowiedź 21 maja 2018 przez j23 Mędrzec (194,920 p.)

Najprościej:

    for(size_t i = 0; i < 200; ++i)
    {
    	auto pos = s2[i].find(s1[i]);
    	if(pos == 0)
    	{
    		std::cout << s1[i] << ' ' << s2[i] << ' ';
    		for(size_t j = s1[i].size(); j < s2[i].size(); ++j) 
    		    std::cout << s2[i][j] << ' ';
    		std::cout << '\n';
    	}
    }    

 

Podobne pytania

0 głosów
0 odpowiedzi 503 wizyt
pytanie zadane 24 czerwca 2019 w C i C++ przez livinsky Nowicjusz (230 p.)
0 głosów
4 odpowiedzi 2,442 wizyt
0 głosów
3 odpowiedzi 725 wizyt
pytanie zadane 21 czerwca 2018 w C i C++ przez XaFF Użytkownik (610 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...