Funkcja zamieniająca małe litery na duże i duże na małe w pliku

0

Witam wszystkich serdecznie,
Od razu mówię, że wiem, że pytam o podstawy, ale na prawdę nie mogę sobie z tym poradzić!
W celu zaliczenia programowania muszę napisać program, wczytujący dane z pliku, zamieniający w nim duże litery na małe i małe na duże a następnie zapisujący w nowym pliku zmienione dane... Oczywiście program ma być napisany w C++...
Z odczytem już sobie poradziłem, z zapisem też powinienem dać radę. Niestety kompletnie nie radzę sobie ze stworzeniem funkcji, która by zamieniała wszystkie litery w sposób jaki opisałem powyżej. Będę mega wdzięczny za pomoc!!!
Nie chcę żeby ktoś mi zrobił gotowca, wystarczy opis jak to zrobić, albo przykład czegoś podobnego.
Pozdrawiam i z góry dziękuję!

0

A spróbuj taki algorytm zapisać słownie, po polsku. :) Dam Ci prototyp funkcji: char modify(char c);

0

zobacz kod asci i roznice miedzy mała litera a a dużą A... Coś rób z tą różnica a wyjdą ci zamiast małych duże lub na odwrót.

0
ace4ur napisał(a)

zobacz kod asci i roznice miedzy mała litera a a dużą A... Coś rób z tą różnica a wyjdą ci zamiast małych duże lub na odwrót.

Na razie doszedłem tylko do tego, że wyświetla mi wartość ASCII pierwszej litery... Właśnie nie wiem, co zrobić, żeby odwołał się do wszystkich...
Podejrzewam, że wydzielić litery mam przy pomocy ifa lub fora...

Algorytm po polsku chyba powinien brzmieć (wiem, że bardzo niepoprawnie)...

  • wczytaj dane,
  • odczytaj wartość ASCII,
  • do liter o wartościach mniejszych od 90 dodaj 32,
  • od liter o wartościach większych od 97 odejmij 32,
  • wyświetl "nowe dane".

Dzięki za wszelkie próby pomocy. Z coderscity mnie wyrzucili za takie pytania...

0

Przykładowy kod, powinien pomóc:

#include <stdio.h>
#include <stdlib.h>

char Zamien(char znak)
{//funkcja zamienia małe litery na duże i odwrotnie
        if(znak == toupper(znak))
        {
                znak = tolower(znak);
        }
        else
        {
                znak = toupper(znak);
        }

        return znak;
}

int main(int argc, char *argv[])
{
    char znak;
    int i=0;
    char ciag[20];

    printf("Podaj kolejno 20 znakow\n");

    while(i<20)
    {
               printf("Podaj %i znak: ", i+1);
               znak = getch();
               printf("%c\n", znak);
               ciag[i]= Zamien(znak);
               i++;
    }
    ciag[i]='\0';
    printf("%s \n", ciag);

    system("PAUSE");    
    return 0;
}
0
michal1045 napisał(a)
  • odczytaj wartość ASCII,
  • do liter o wartościach mniejszych od 90 dodaj 32,
  • od liter o wartościach większych od 97 odejmij 32,

Ale oczywiście wiesz, że pojedyńczy znak ma swój kod ASCII, a nie cały ciąg? Bo z Twoich wypowiedzi to nie wynika.

0

zamiast funkcji lepiej gotową tablicę 256 charów: indeks — litera źródłowa, wartość w tablicy — litera docelowa.

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