Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Zadanie z justowaniem


Vipper

Rekomendowane odpowiedzi

Opublikowano

Siemanko. Jak rozwiązać takie zadanie:

Twoim zadaniem będzie rozciągnięcie odstępów między słowami w taki sposób, aby łańcuch (którego długość liczona jest bez otaczających go cudzysłowów) zajął łącznie tyle znaków, ile określono w pierwszej linii danych.

Zakładamy, że rozciąganie odstępów przeprowadzamy od lewej do prawej, a uzyskany łańcuch znaków twój program powinien wypisać w jednym wierszu tekstu, otaczając go cudzysłowami.

Wejście
2 wiersze tekstu zawierające kolejno:

*liczbę całkowitą z przedziału <1..1000>
*ujęty w cudzysłowy ciąg liter rozdzielonych pojedynczymi spacjami

Wyjście
jeden wiersz tekstu, zakończony znakiem przejścia do nowego wiersza i zawierający wyjściowy ciąg znaków ujętych w cudzysłowy

Przykład

Wejście:
6
"a b c"



Wyjście:
"a  b c"

 Kod kolegi w C#: 

http://pastebin.com/BzVaN3rG

Problem jest taki, że jest on niepoprawny i raz mu zaliczyło, a 5 razy nie :<

 

Ja mam taki problem, że potrzebuję taki kod w C++. Do tej pory robiłem to nieudolnie :P

http://pastebin.com/r1Ld1TEK
Opublikowano

Twój kod jest tak napisany, że nie rozumiem co się w nim dzieje, więc nie chce mi się go poprawiać.

Kod kolegi jest zły, bo zakłada, że spacje są co dwa miejsca.

#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
    int neededWidth;
    string text;
    cin >> neededWidth;
    cin.ignore();
    getline(cin, text);
    neededWidth += 2;
    int numberOfSpaces = count(text.begin(), text.end(), ' ');
    int missingSpaces = neededWidth - text.size();
    string result;
    for(auto c : text)
    {
        result += c;
        if(c == ' ')
        {
            int numberOfSpacesToAppend = (missingSpaces-1)/numberOfSpaces+1;
            result.append(numberOfSpacesToAppend, ' ');
            missingSpaces -= numberOfSpacesToAppend;
            --numberOfSpaces;
        }
    }
    cout << result << '\n';
    return 0;
}

Jak coś to pytaj.

Opublikowano

http://ideone.com/JGA88R

Błąd :< 

A w Code::Block'sie

17|error: 'c' does not name a type|
28|error: expected ';' before 'cout'|
29|error: expected primary-expression before 'return'|
29|error: expected ')' before 'return'|

 

 

Opublikowano
Opublikowano

Odpisał, że jest to niezależne od nich :v 

Tak czy inaczej za poprawiony kod daje resztki z paypala (6 zł) :P i dozgonną wdzięczność ;)

Opublikowano
for(auto c : text)

Zmienna c przyjmuje w każdym następnym obrocie pętli kolejne wartości ze stringa text. Możesz to zastąpić prostą iteracją licznika od 0 do < text.size() i iterować po tym stringu jak po tablicy.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...