Keresés


Toplista

Toplista
  • betöltés...

Segítség!

Ahhoz, hogy mások kérdéseit és válaszait megtekinthesd, nem kell beregisztrálnod, azonban saját kérdés kiírásához ez szükséges!

Név karakterei, programozás

81
Í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: 2 hete
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