Napisz program, który wypisuje strumień wejściowy w odwrotnej kolejności, zamieniając małe litery na duże.

0
int main(void)
{

    char napis[100];
    int i;
    scanf("%s",napis);
    for(i=0;i<strlen(napis);i++)
        printf("%c ",toupper(napis[i]));
       
    return 0;
}

Funkcja zmienia male litery na duże, ale jak zrobić by odwracała wyraz ? Jaka jest funkcja odwracania ?

0

Przeiteruj po napisie od końca do początku:
for (i=strlen(napis)-1; i>=0;i--)

1

Musisz pobrać cały strumień wejściowy, a nie tylko jeden wyraz. Pomyśl, że ktoś mógłby tam wpisać np. treść "Pana Tadeusza".

2
kq napisał(a):

Musisz pobrać cały strumień wejściowy, a nie tylko jeden wyraz. Pomyśl, że ktoś mógłby tam wpisać np. treść "Pana Tadeusza".

generalnie, jeśli w przepisywaniu zadania nie nastąpiły przekłamania, to Houstom mamy problem.
W teorii strumień jest nieskończony (co w informatyce mam pewne implementacje, czy to z socketu, czy generalnie jakieś "żywe" dane - może nie są nieskończone w sensie matematycznym, ale nie wiemy nic o końcu), i nie da się go odwrócić.
Ale skoro Chuck Norris nagrał internet na dyskietkę ...

0
AnyKtokolwiek napisał(a):

W teorii strumień jest nieskończony

Nie zgodzę się. Z tego co mi wiadomo to jeśli chodzi o standardowy strumień wejściowy to może mieć on koniec. Przy wpisywaniu danych na Linuksie jest to Control+D, na windowsie - Control+Z, przy odczycie znak po znaku jest to wartość -1 (czyli EOF :) )

1
#include <stdio.h>

int main()
{
    int ch=getchar();
    if(ch!=EOF) { main(); putchar(ch); }
}

https://ideone.com/FsFBy5

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