cout i endl

A9
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam mam pytanie:

Według mnie za każdym razem kiedy warunek wewnętrznej pętli jest spełniony powinno się wykonać:

Kopiuj
         
cout<<theChar;
cout<<endl;

a w książce jest napisane, że:

Kopiuj
cout<<endl; 

wykonuje się tylko wtedy kiedy warunek pętli nie jest spełniony.
Chodzi mi o to czy nie powinno być czegoś na wzór "else". Nie rozumiem dlaczego jeden cout jest wykonywany kiedy warunek jest spełniony, a drugi cout kiedy nie jest spełniony. Wiem, że banał, proszę o pomoc. Tu cały kod:

Kopiuj
#include <iostream>
using namespace std;

int main()
{
int w;
int k;
char theChar;
cin>>w;
cin>>k;
cin>>theChar;
for(int i=0;i<w; i++)

{
    for (int j = 0; j<k; j++)

        cout<<theChar;
        cout<<endl;

}
return 0;
}
 
fasadin
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4883
3

brakuje Ci {}

http://fasadin.4programmers.net/
4.4.2 Wyjaśnienie pojęcia pętli

i nie uzywaj endl do nowej linii. Endl czysci rowniez bufor. Jezeli chcesz to nowa linie to uzyj "\n"

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
5

Bez klamerek wykona się tylko pierwsze wyrażenie po definicji pętli.

pingwindyktator
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1055
4

Rozwiązanie: formatuj kod.

A9
  • Rejestracja: dni
  • Ostatnio: dni
0

hmm w książce nie ma klamerek. Według mnie to bardzo mylące. Dobra dzięki!

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
1

Jeśli nie ma klamerek, a jest taka indentacja i nie jest to przykład złych praktyk to zmień książkę natychmiast.

pingwindyktator
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1055
3

Klamerki nie są potrzebne do zrozumienia co tutaj sie dzieje. Popatrz na to:

Kopiuj
for (int j = 0; j < k; j++)
    cout << theChar;

cout << endl;
A9
  • Rejestracja: dni
  • Ostatnio: dni
0

Mam jeszcze małe pytanie:
Zadano mi pytanie co to oznacza:

Kopiuj
char* 

Co powinienem odpowiedzieć?

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
1

To jest wskaźnik na char. Polecam dowolny kurs C/C++.

A9
  • Rejestracja: dni
  • Ostatnio: dni
0

Rozumiem. Tak dla pewności: ten zainicjalizowany pusty wskaźnik możemy to zapisać na trzy rożne sposoby? (chodzi mi o białe znaki)

Kopiuj
 
int* x = 0
int *x = 0
int * x = 0

?

koszalek-opalek
  • Rejestracja: dni
  • Ostatnio: dni
1
arturek999 napisał(a):

Rozumiem. Tak dla pewności: ten zainicjalizowany pusty wskaźnik możemy to zapisać na trzy rożne sposoby? (chodzi mi o białe znaki)

Kopiuj
 
int* x = 0
int *x = 0
int * x = 0

?

Można też w ogóle bez spacji. :)

Kopiuj
int*x=0

Ale nie polecam. :)

pingwindyktator
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1055
2
Kopiuj
int



              *


x=

0
               ;

Tak też można.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.