[C] Wyrównanie do prawej i lewej strony


(niesuszek) #1

Witam. Mam do zrobienia zadanie:

Napisz program, który pobiera imię i nazwisko użytkownika, po czym wyświetla: w pierwszym wierszu imię i nazwisko, a w drugim liczbę liter w imieniu i nazwisku. Każda z liczb powinna znajdować się pod ostatnią literą odpowiadającego jej wyrazu.

Następnie zmień program tak, aby liczby były zrównane z pierwszymi literami imienia i nazwiska.

Mój kod:

#include 

#include 

#include 


int main()

{

    char imie[20]; 

    char nazwisko[20];

    printf ("Jak masz na imie?\n");

    scanf ("%s", imie);

    printf ("Jak masz na nazwisko?\n");

    scanf ("%s", nazwisko);

    printf ("%s %s\n", imie, nazwisko);

    printf ("%d %d", strlen(imie), strlen(nazwisko));

    getch();

    return 0;

}

Wszystko jest ok, tylko nie wiem co trzeba zrobić żeby liczby znajdowały się pod wyrazami z prawej i lewej strony?


([alex]) #2

scanf ("%19s",imie); // koniecznie aby nie mazało po pamięci przy przekroczeniu

scanf ("%19s",nazwisko); // koniecznie aby nie mazało po pamięci przy przekroczeniu

printf ("%20s %20s\n",imie,nazwisko); // do prawej

printf ("%-20s %-20s\n",imie,nazwisko); // do lewej


(niesuszek) #3

Nie do końca o to chodziło. Nie jest to dokładne.


([alex]) #4

Może nie zrozumiałeś:

printf ("%20s %20s\n%20d %20d\n",imie,nazwisko,strlen(imie),strlen(nazwisko));

jest dokładnie jak w zadaniu.

Można też tak jak poniżej:

li=strlen(imie);

ln=strlen(nazwisko);

printf ("%s %s\n%*d %*d\n",imie,nazwisko,li,li,ln,ln);


(niesuszek) #5

Teraz działa odpowiednie, dzięki wielkie :slight_smile: