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

Dwa pytania odnośnie C++

Object Storage Arubacloud
0 głosów
471 wizyt
pytanie zadane 4 marca 2016 w C i C++ przez falauthy Stary wyjadacz (11,550 p.)

Mam takie dwa problemy.

1.

Mam taki kod

#include <iostream>

using namespace std;

int main()
{
    cout << "Wpisz slowo: ";
    string slowo;
    cin >> slowo;
    string odczyt;

    for (int i = 0; i <= slowo.length(); i++){
        odczyt[i] = slowo[i];

        for(int j = 0; j <= slowo.length(); j++){
            odczyt[j] = slowo[j];

            if(odczyt[i] == odczyt[j])
                cout << odczyt[j];
        }
    }
    return 0;
}

Chcę wypisać litery, które się powtarzają. Wypisuje mi całe słowo razem z powtarzającymi się literami. Jak wyświetlić tylko powtarzające się litery?

2.
https://github.com/Fallauthy/Projects/blob/master/cPlusPlusProjects/bazaPracownikow/bazaPracownikow/bazaPracownikow/main.cpp

Na gicie znajduje się kod, podobny do kodu z 7 lekcji z C++ na kanale Pana Mirosława. Ja wypisuje go tak, że po tabulacjach pokazuje mi Imie, nazwisko i nr telefonu. Gdy odczytuje z pliku, to wypisuje mi każde słowo w nowej linii. Sam tak zrobiłem, ale chciałbym żeby mi wypisywało tak jak jest w pliku.

Jeszcze pytanie odnośnie tego kodu. Przyznam się, ten kod

std::string loadLineFromBase = "";
	//wykonuj dopoki nie ma konca pliku
	while (!baseFile.eof()) {
		//wczytaj zawartosc pliku do zmiennej
		std::string buffer;
		baseFile >> buffer;

		//wypisz
		loadLineFromBase += buffer;
		loadLineFromBase += " \n";
	}
	std::cout << loadLineFromBase << std::endl;

Zerżnąłem z jednego forum i nie za bardzo rozumiem co się tam dzieje. Skomentowałem to sobie, ale nie wiem czy dobrze to pojąłem. :)

2 odpowiedzi

0 głosów
odpowiedź 4 marca 2016 przez mbabane Szeryf (79,280 p.)

1. odczyt[i]odczyt[j] to nie sa rozne zmienne to sa dokladnie te same. Polece Ci dydaktycznie, abys rozpisal sobie na kartce 2 - 3 iteracje i zobaczysz  blad,

komentarz 4 marca 2016 przez falauthy Stary wyjadacz (11,550 p.)
Coś mi świta, ale dalej nie mogę znaleźć błędu. :/
komentarz 4 marca 2016 przez mbabane Szeryf (79,280 p.)
edycja 5 marca 2016 przez mbabane

ok, zatem popatrz:

juz pierwsza iteracja sugeruje ze cos jest nie tak:
dla i = 0: odczyt[i] = pierwszy znak ciagu slowo
nastepnie wchodzac do drugiej petli for:
dla j=0: odczyt[j] (uwaga czyli to samo co wyzej bo j jest rowny 0! juz to moze sugerowac ze cos jest nie tak) = pierwszy znak ciagu slowo
nastepnie (caly czas dla pierwszej iteracji) porownujesz to samo! czyli czy odczyt[i] jest rowny odczyt[j] a sa przeciez rowne 0! warunek spelniony!

 

komentarz 4 marca 2016 przez falauthy Stary wyjadacz (11,550 p.)
Kurcze, w takim razie nie mam pomysłu jak to inaczej porównać. :/
komentarz 4 marca 2016 przez mbabane Szeryf (79,280 p.)
zastanow sie najpierw jak w glowie sprawdzasz litery powtarzajace sie w wyrazie, napisz sobie jakis wyraz na kartce i sprobuj znalezc jakas prosta metode.
komentarz 4 marca 2016 przez falauthy Stary wyjadacz (11,550 p.)
Biorę pierwszą literę i sprawdzam czy w dalszej części się powtarza. Niestety nie wpadłem na pomysł jak to przelać na kod.
komentarz 5 marca 2016 przez mbabane Szeryf (79,280 p.)
ok, to teraz :) zastanow sie jak w kodzie bierze sie pierwsza litere i jak ja zapisac (czy bardziej poprawnie przypisac)  do jakiejs innej zmiennej. Nastepnie zastanow sie jak mozna ta literke porownac wzgledem pozostalych.

Obejzyj material a byc moze cos Ci sie rozjasni:
https://www.youtube.com/watch?v=ZGtdSv7Ktt4
0 głosów
odpowiedź 4 marca 2016 przez Aisekai Nałogowiec (42,190 p.)
loadLineFromBase += buffer;

        loadLineFromBase += " \n";

To nie jest wypisz, tylko łączenie (konkatenacja - chyba tak to się nazywa) stringów. Wypisz masz dopiero w linii z coutem. I o ile się nie mylę, po skończeniu pętli while, wypisze ona zawartość pliku - tak mi się przynajmniej wydaje ^.^

komentarz 4 marca 2016 przez falauthy Stary wyjadacz (11,550 p.)
No tak, nie zauważyłem. :p Tylko pozostaje problem żeby nie wypisywało ciągle po znaku nowej linii, tylko tak jak jest w pliku.
komentarz 4 marca 2016 przez Aisekai Nałogowiec (42,190 p.)
A jakbyś usunął:

loadLineFromBase += " \n";

?
komentarz 4 marca 2016 przez falauthy Stary wyjadacz (11,550 p.)
Niestety nie działa, wyświetla wszystko w wierszu.

Podobne pytania

0 głosów
1 odpowiedź 85 wizyt
pytanie zadane 16 stycznia 2018 w C i C++ przez Q7V Gaduła (4,250 p.)
0 głosów
0 odpowiedzi 73 wizyt
pytanie zadane 16 listopada 2019 w Sprzęt komputerowy przez Cixo Gaduła (4,070 p.)
0 głosów
1 odpowiedź 113 wizyt
pytanie zadane 9 kwietnia 2019 w PHP przez Luna Cognita Dyskutant (8,130 p.)

92,579 zapytań

141,432 odpowiedzi

319,662 komentarzy

61,963 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!

...