Dodaj do ulubionych

Zamiana małych liter na duże i odwrotnie

17.10.05, 10:52
I znów potrzebuję pomocy. Nie wiem jak napisać programik który by zamieniał
małe litery na duże i odwrotnie. Mam kawałek takiego programu ale niestety nie
działa. Podpowiedzcie co żle zrobiłam. Tekst musi być wpisywany do tablicy.

#include <iostream>

using namespace std;

int main (int argc, char *argv[])
{
char s[10];
int i;
char znak;
int roznica='a'-'A';
cout << "Wpisz tekst (maksymalnie 9 znakow): " << endl;
cin.getline(s, 10);
cout << "Wpisales: " << s << endl;
for(i=0;i<10;i++)
{
if('A' <= znak <= 'Z')
s[10]=(znak-roznica);
else
s[10]=(znak+roznica);
}
cout<<"Po zmianie: "<<s[10]<<"\n";
system("PAUSE");

}

Proszę o wyrozumiałość w poprawności tego programu ale są to moje początki z c++.
Obserwuj wątek
      • anna852 Re: Zamiana małych liter na duże i odwrotnie 17.10.05, 21:31
        Wielkie dzięki. Już wiem gdzie robiłam błąd.
        A teraz mam do rozwiązania taki mały problem:

        #include <iostream>

        // W tym programie sa dwa (dosc czesto popelniane) bledy.
        // Jeden z nich powoduje zwykle niekontrolowane zachowanie sie uruchumionego
        programu.
        // Okreslic co jest powodem pierwszego, a co drugiego bledu.

        using namespace std;

        int main (int argc, char *argv[])
        {
        float a = 4.5;
        float *x, y;

        *x = 10.0;
        y = &a;
        cout << "Wcisnij ENTER" << endl;
        cin.get();
        }

        Nie mogę się połapać o co chodzi w tych wskaźnikach. Pomóżcie, proszę...
        • alsor wskazania do wskaźników 18.10.05, 02:50
          float a = 4.5;
          float *x, y, z;

          x jest wskaźnikiem, który w tej chwili wskazuje na przypadkowy obszar pam.
          (może to być obszar zabroniony - innego programu/systemu ...)
          Należy go ustalić np.: x = &z; (x wskazuje na 'z', czyli wartość *x = z)

          *x = 10.0; // katastrofa - zapis do przypadkowego obszaru pamięci

          y = &a; // niezgodność typów, kompilator nie łyknie tego;
          // można napisać: x = &a, albo y = a

          ----------
          Wskaźniki są często używane jako tablice tworzone 'dynamicznie':
          double *t;

          t = (double*)alloc(sizeof(*t)*1000); // tworzę 1000-elementową tablicę
          // sizeof(*t) = sizeof(double) = 8, zatem łącznie mamy blok 8000 bajtów
          // dostęp do tych elementów: t[i] lub *(t+i), i = <0..999>
          // teraz można wykonać:
          t[0] = 1.9;
          t[1] = 2.2;
          t[3] = t[1] + 7;
          // itd., można coś obliczać na tysiącu zmiennych...

          free(t); // zwolnienie pamięci, gdy już jej nie potrzebujemy.

          // a teraz:
          t[8] = 99.0; // kosmiczny błąd! t wskazuje na coś, czego już nie ma.
                • anna852 Tablice dynamiczne 18.10.05, 16:03
                  Jeżeli mogę prosić jeszcze o pomoc to bardzo proszę o przeanalizowanie
                  poniższego programu:
                  #include <iostream>
                  #include <stdlib.h>

                  using namespace std;

                  int main(int argc, char *argv[])
                  {
                  int i, rozmiar;
                  int *tabl1 = new int [rozmiar];
                  int *tabl2 = new int [rozmiar];
                  cout<<"Podaj rozmiar tablicy: ";
                  cin>>rozmiar;

                  for (i=0;i<rozmiar;i++)
                  {
                  cout<<"Podaj element nr "<<i<<" : ";
                  cin>>tabl1[i];

                  }
                  for (i=0; i<rozmiar;i++)
                  {
                  tabl2[rozmiar-1-i]=tabl1[i];
                  }
                  cout<<"\n Elementy 1 tablicy:";
                  for(i=0;i<rozmiar;i++)
                  {
                  cout<<"\n Element nr: "<<i<<" ma wartosc "<<tabl1[i]<<"\n";

                  }
                  cout<<"\n Elementy 2 tablicy:";
                  for(i=0;i<rozmiar;i++)
                  {
                  cout<<"\n Element nr: "<<i<<" ma wartosc "<<tabl2[i]<<"\n";

                  }
                  delete [] tabl1;
                  delete [] tabl2;
                  system("PAUSE");
                  return 0;
                  }


                  Program ten ma za zadanie wczytac od uzytkownika (w petli) wszystkie wartosci do
                  tablicy tabl1, a nastepnie - w innej petli - przepisac je W ODWROTNEJ KOLEJNOSCI
                  do tablicy tabl2. Na koniec nalezy wyswietlic zawartosc obu tablic.
                  Dodatkowo na początku ma pytać użytkownika o rozmiar tablicy i deklarować tabl1
                  i tabl2 zgodnie z tym rozmiarem.
                  Program ogólnie działa i się kompiluje tyle że nie jestem pewna co do zapisu:
                  tabl2[rozmiar-1-i]=tabl1[i];
                  czy jest on poprawny?? I czy program jest ogólnie napisany w miarę dobrze.
                  Proszę o odpowiedź.
                  • alsor Re: Tablice dynamiczne 19.10.05, 07:11
                    //Przed utworzeniem tablic musisz już mieć 'rozmiar'

                    int i, rozmiar;

                    cout<<"Podaj rozmiar tablicy: ";
                    cin>>rozmiar;

                    if( rozmiar <= 0 ) return; // zły rozmiar... kończymy

                    int *tabl1 = new int [rozmiar];
                    int *tabl2 = new int [rozmiar];

                    -----------
                    tabl2[rozmiar-1-i] = tabl1[i]; // kopiowanie w odwrotnej kolejn. - jest dobrze
Inne wątki na temat:

Popularne wątki

Nie pamiętasz hasła

lub ?

 

Nie masz jeszcze konta? Zarejestruj się

Nakarm Pajacyka