Wyświetlanie połowy stringa

0

Witam skleiłem coś takiego:

#include <iostream>
#include <string.h>
#include <vector>

using namespace std;

int t,i=0,t1,i1=0,td,i2=0;
int d1[1000];
string napis[1000];

int main()
{
    cin>>t;
    t1=t;
    td=t;
    while(t>0)
    {
        cin>>napis[i];
        t--;
        i++;
    }
    while(t1>0)
    {
        d1[i1]=napis[i1].length()/2;
        string w=napis[i1];
        char * ct = new char[i1+1];
        strcpy(ct,w.c_str());
        string wy;
        for(int a=0; a<d1[i1]; a++)
        {
            wy+=ct[a];
        }
        cout<<wy<<endl;
        t1--;
        i1++;
    }
    return 0;
}

Działa ale wydaje mi się że jest to strasznie prymitywne... Ogólne zadanie polega na tym że wpisujesz na początku liczbę ile stringów wpiszesz potem je wpisujesz a program obcina ci do połowy. Ma ktoś pomysł jak to poprawić aby "ładniej" wyglądało? Szczególnie boli mnie to multiplikowanie zmiennych i stałych...

1

Twój program jest niepoprawny: https://wandbox.org/permlink/Z3AkXxgpS2Ds706R

Zamiast bawić się w błędne new i delete (po co, skoro i tak używasz stringa?!) i zbędnie sobie utrudniać pracę, idź "na łatwiznę":

Masz tu alternatywę:

int main()
{
    int count;
    std::cin >> count;
    while(count --> 0) {
        std::string s;
        std::cin >> s;
        s.resize(s.size()/2);
        std::cout << s << '\n';
    }
}

BTW: https://dsp.krzaq.cc/post/176/ucze-sie-cxx-kiedy-uzywac-new-i-delete/

0
#include <iostream>

using namespace std;

int t,i=0,t1,i1=0;
string napis[1000],n[1000];

int main()
{
    cin>>t;
    t1=t;
    while(t>0)
    {
        cin>>napis[i];
        t--;
        i++;
    }
    while(t1>0)
    {
        n[i1]=napis[i1].resize(napis[i1].size()/2);
        cout<<n[i1]<<endl;
        t1--;
        i1++;
    }
    return 0;
}
0

A co za błąd masz? Szklana Kula ma wolne - niedziela. Pomijając użycie while zamiast for, i krótkie, niedeskryptywne nazwy zmiennych, chyba jest ok, o ile liczba stringów wejściowych jest mniejsza niż 1000

1 użytkowników online, w tym zalogowanych: 0, gości: 1