Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Napisy i warunki

Ostatnio zmodyfikowano 2016-01-30 19:02
Autor Wiadomość
Kordian
Temat założony przez niniejszego użytkownika
Napisy i warunki
» 2016-01-30 17:19:18
Cześc wam, mam następujący problem:
Chciałbym, żeby mój program wczytywał napis od użytkownika, a następnie wykonywał jakieś instrukcje,ale ten napis musi byc typu char.
C/C++
cout << "Sumowac? " << endl;
cin >> napis;
if( napis[ 1 ] == 'T' )
     sumowanie();

Taki przykładowky kod, zakładam, że użytkownik wprowadzi napis o długości 1 naturalnie, takie rozwiązanie przejdzie? Jeśli nie, to co powinienem zmienić? Nie chcę korzystać ze stringów, muszę przećwiczyć chary.
P-144185
pekfos
» 2016-01-30 17:40:45
Wczytaj po prostu jeden znak?
P-144190
mateczek
» 2016-01-30 17:43:43
innymi słowy interesują cię napisy jak w języku C. Są to napisy zakończenie znakiem "0"
Dlatego musisz korzystać z funkcji znanych w języku C

Napisy w języku C są definiowane jako

C/C++
#include <iostream>
#include <cstring>
using namespace std;

int main()
{
    char napis[ 20 ];
    cin >> napis;
    if( strcmp( napis, "alicja" ) == 0 ) {
        cout << "tak" << endl;
    } else cout << "nie" << endl;
   
}
P-144193
Kordian
Temat założony przez niniejszego użytkownika
» 2016-01-30 17:57:09
@pekfos

Wczytaj po prostu jeden znak?

Chary to tablice znaków zakończone bajtem zerowym, wczytuję właśnie jeden znak.
@mateczek

if( strcmp( napis, "alicja" ) == 0 ) {
        cout << "tak" << endl;
    } else cout << "nie" << endl;

Powinienem porównać zatem mój napis z 't' albo 'T', chciałeś mi to podpowiedzieć?
P-144198
pekfos
» 2016-01-30 18:08:03
Chary to tablice znaków zakończone bajtem zerowym, wczytuję właśnie jeden znak.
Mam na myśli kompletnie jeden znak.
C/C++
char znak;
P-144200
mateczek
» 2016-01-30 18:11:10
chyba Cie nie zrozumiałem trochę zmiksowałeś pojęcia !!! Jeśli chcesz pracować na znakach pojedynczych to wczytujesz znak pojedynczy. jeśli chcesz porównywać całe napisy w stylu C korzystać musisz z funkcji strcmp()
C/C++
char znak
cin >> znak;
if( znak == 'a' ) { }
P-144201
Kordian
Temat założony przez niniejszego użytkownika
» 2016-01-30 18:17:31
tylko jak mam wczytać char pojedyńczy skoro jego długość będzie zawsze wieksza od 1? Każdy char MUSI zawierać bajt zerowy, który oznacza koniec napisu i stoi on na ostatnim miejscu tablicy znaków. Czyli znak 'T' to w rzeczywistości tablica dwuelementowa zawierająca elementy char[1]='T' i char[2]=0. Nie za bardzo rozumiem co znaczy wzcytać jeden znak.
P-144203
pekfos
» 2016-01-30 18:28:38
Jeden znak, to jest jeden znak - 8-bitowa liczba. Bajt zerowy musi być zawarty na końcu c-stringa, czyli ciągu znaków. 'T' to liczba, "T" to dwuelementowa tablica znaków.

Czyli znak 'T' to w rzeczywistości tablica dwuelementowa zawierająca elementy char[1]='T' i char[2]=0.
Napisałeś właśnie, że znak, to ten znak i zero. Czyli dowolny znak rozwija się rekurencyjnie w ten znak i nieskończenie wiele zer..? A skoro widzimy znaki na ekranie, to muszą się mieścić w pamięci, więc każda pamięć ma nieskończenie wielką pojemność. To by znaczyło, że te wszystkie giga/terabajty to tylko marketing i wyciskanie kasy za nic! Chwila.. To tak głupie, że powinieneś to sam zauważyć..
P-144204
« 1 » 2
  Strona 1 z 2 Następna strona