Keresés


Toplista

Toplista
  • betöltés...

Magántanár kereső

Ha szívesen korrepetálnál, hozd létre magántanár profilodat itt.
Ha diák vagy és korrepetálásra van szükséged, akkor regisztrálj be és írd meg itt, hogy milyen tantárgyban!

Név karakterei, programozás

163
Írassa ki szóközökkel elválasztva a felhasználó által megadott vezetéknév és keresztnév minden 3. karakterét!

Pl:
Név: Kis Pista
K P t

A feladatot Codeblocks c++ -ba kellene megoldani.

Előre is köszönöm.
Jelenleg 1 felhasználó nézi ezt a kérdést.
0
Középiskola / Informatika

Válaszok

5
A feladat meglehetősen lazán van megfogalmazva. Lehet a tanterv ismeretében világosabb, hogy milyen megoldást várnak el, én viszont nem ismerem.

Ha a név részeit külön olvasod be (feltételezve, hogy csak egy-egy vezeték- illetve keresztnév van), akkor egyszerű:

#include <iostream>
#include <string>

int main()
{
    std::string vezeteknev, keresztnev;

    std::cout << "Vezetéknév: ";
    std::cin >> vezeteknev;

    std::cout << "Keresztnév: ";
    std::cin >> keresztnev;
   
    for (int i = 0; i < vezeteknev.length(); i += 3) {
        std::cout << vezeteknev[i] << " ";
    }
    for (int i = 0; i < keresztnev.length(); i += 3) {
        std::cout << keresztnev[i] << " ";
    }
    std::cout << std::endl;

}



Ha az egész nevet egybe kell kezelni (akárhány vezeték- illetve keresztnév lehet), akkor egy picit bonyolultabb:

#include <iostream>
#include <string>

int main()
{
    std::string nev;

    std::cout << "Név: ";
    std::getline(std::cin, nev);

    int sorszam = 0;
    for (int i = 0; i < nev.length(); i++) {
        if (nev[i] == ' ') {
            sorszam = -1;
        }
        if (! (sorszam++ % 3)) {
            std::cout << nev[i] << " ";
        }
    }
    std::cout << std::endl;

}
Módosítva: 11 hónapja
1

(Ez nem válasz, hanem hozzászólás a korábbi válaszomhoz.)
1

(Ez nem válasz, hanem hozzászólás a korábbi válaszomhoz.)
1

Nem tudom mi a gond a 12.sorban
0

Gondolkoztam rajta még egy sort és tulajdonképpen nem csak a feladat megfogalmazása, de még a példa is gyatra.

Ugyanis nem derül ki belőle, hogy miért lett kiírva a „P”. A „Nagy Pista” sokkal jobb példa lett volna, mert látható az értelmezésbeli különbség:

  • Minden szónál újrakezdjük a számolást — a korábbi megoldásban így értelmeztem
`color(red)tt"K"tt"is"tt" "color(red)"P"tt"is"color(red)tt"t"tt"a → K P t"`
`color(red)tt"0"tt"12"tt" "color(red)"0"tt"12"color(red)tt"0""1"`
`color(green)tt"N"tt"ag"color(green)tt"y"tt" "color(green)"P"tt"is"color(green)tt"t"tt"a → N y P t"`
`color(green)tt"0"tt"12"color(green)tt"0"tt" "color(green)"0"tt"12"color(green)tt"0""1"`

  • Folytonosan számolunk, de átugorjuk a szóközt — lásd az alábbi megoldást
`color(red)tt"K"tt"is"tt" "color(red)"P"tt"is"color(red)tt"t"tt"a → K P t"`
`color(red)tt"0"tt"12"tt" "color(red)"0"tt"12"color(red)tt"0""1"`
`color(green)tt"N"tt"ag"color(green)tt"y"tt" Pi"color(green)tt"s"tt"ta → N y s"`
`color(green)tt"0"tt"12"color(green)tt"0"tt" 12"color(green)tt"0"tt"12"`

#include <iostream>
#include <string>

int main()
{
    std::string nev;
    std::cout << "Név: ";
    getline(std::cin, nev);

    int sorszam = 0;
    for (int i = 0; i < nev.length(); i++) {
        if (nev[i] != ' ') {
            if (! (sorszam++ % 3)) {
                std::cout << nev[i] << " ";
            }
        }
    }
    std::cout << std::endl;

}
1