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

problem ze wstrzymaniem programu

Ostatnio zmodyfikowano 2012-09-10 14:08
Autor Wiadomość
marichuan
Temat założony przez niniejszego użytkownika
problem ze wstrzymaniem programu
» 2012-09-07 16:02:21
Mam problem tego typu, że chcę wyświetlić tablice ASCII w 4 kolumnach (to udało mi się zrobić) i chciałbym żeby wyświetlanie tejże tablicy w konsoli zatrzymywało się po 24 kolumnach. Następnie po naciśnięciu dowolnego klawisza na klawiaturze wyświetliło następne 24 kolumny. Dopiero zaczynam swoją przygodę z programowaniem więc byłbym bardzo wdzięczny za udzielenie pomocy. Poniżej znajduje się to do czego na razie doszedłem.



C/C++
//  main.cpp

#include <iostream>


int main( int argc, char * argv[] )
{
    std::cout << "   TABLICA KODOW ASCII   " << std::endl;
    std::cout << "-------------------------" << std::endl;
    std::cout << std::endl;
   
    for( int i = 32; i < 256; )
    {
       
        for( int licz = 0; licz < 4; licz++ )
        {
            std::cout << "| " << static_cast < char >( i ) << "==" << i++<< " | ";
        }
       
        std::cout << std::endl;
        if( 127 < i )
             getchar();
       
    }
P-64505
kubawal
» 2012-09-07 16:11:45
for( int i = 32; i < 256; )
 
 Powinno być
for( int i = 32; i < 256; i++ )
P-64506
marichuan
Temat założony przez niniejszego użytkownika
» 2012-09-07 16:38:59
Dlaczego tak uważasz??? Wydaje mi się, że kiedy ostatnio czytałem o pętli for to było tam napisane, że nie trzeba podawać wszystkich warunków. A poza tym chodzi mi głównie o te wstrzymanie wyświetlania tablicy. Zrobiłem w pierwszej wersji tak jak teraz radzisz z i++ i program działał nieprawidłowo tzn. co czwarty znak opuszczał jeden znak :-) 
P-64507
akwes
» 2012-09-07 17:34:57
@kubawal

nie zauważył, że i++ jest w środku pętli.

Możesz spróbować użyć niestandardowej funkcji getch() z conio.h, aczkolwiek jest ona zwykle dostępna wyłącznie na systemy win.
P-64510
RazzorFlame
» 2012-09-07 18:00:17
std::cout << "| " << static_cast < char >( i ) << "==" << i++<< " | ";
Te rzutowanie równie dobrze możesz zapisać tak:
char( i )
 ale też
( char ) i
Aha właśnie jeszcze jeśli chciałeś odrazu wyświetlić i+1 "<< i++<<..." to nie zadziała. Trzeba użyć preinkrementacji. Jeśli nie to zignoruj to :)
P-64513
akwes
» 2012-09-07 18:14:45
@RazzorFlame

1.
Dlaczego każesz mu używać gorszego rzutowania, skoro użył poprawnego w stylu C++ a nie C?

2.
Skoro on chce wyświetlić znaki ASCII, to jak sądzisz jak będzie wyświetlał? Chyba zgodnie z wartością jaka jest w znaku char, a nie o jeden większą. Eh...
P-64515
RazzorFlame
» 2012-09-07 18:22:25
@akwes Ja nie mówie że MUSI tak pisać. Ja tylko powiedziałem jak jest szybciej. I dlaczego gorszego?
P-64517
akwes
» 2012-09-07 18:33:34
@RazzorFlame,

ale mieszasz mu w głowie. Oba rzutowanie nie są tożsame, więc nie można powiedzieć, że może wybrać to albo to. Rzutowanie w C-stylu oraz rzutowanie C++ ma za sobą idące konsekwencje. Nie bez powodu twórcy języka stworzyli casty, żeby używać rzutowania w C-stylu, które zostało aby zachować kompatybilność z C. Rzutowania C++ dostarczają więcej informacji czytającemu kod oraz są bezpieczniejsze, co na etapie nauki pozwoli uniknąć głupich błędów z powodu nieznajomości zachowań rzutowania w C-stylu.

http://technojazda.wikidot.com/standardcpp#toc24
P-64519
« 1 » 2
  Strona 1 z 2 Następna strona