Zaloguj się, aby obserwować  
Bartuc

Język C / C++ / C# / Java - pytania, problemy...

1979 postów w tym temacie

Dnia 12.10.2007 o 19:18, LifaR napisał:

> Ale każdy pracuje inaczej. Ważne żeby program prawidłowo działał.
-> Skupie sie tylko na tej czesci Twojej wypowiedzi :)
Nie tylko. Wazne zeby byc w stanie kod utrzymac i zeby byl on zrozumialy (nie tylko dla Ciebie).
Jak bedziesz dalej rozbudowywal ten program, to main rozrosnie sie do takich rozmiarow, ze
bedzie to na pewno nieczytelne, a jakiekolwiek dalsze zmiany sprowadza sie do przepisania calego
kodu na nowo i dopiero dodania nowej opcji.
No ale Twoj wybor, na razie sie uczysz i mozesz w tym czasie nauczyc sie pisac tak, jak powinno
wejsc Ci w krew, lub nauczyc sie pisac zle :)
Moge tylko powtorzyc to co napisal Jarys, a Ty zrobisz to co bedziesz chcial. Dopowiem tylko,
ze jesli masz trudnosci teraz z programowaniem proceduralnym (nie chodzi o to, ze nie umiesz,
tylko o to, ze uznajesz to za niepotrzebne), to programowanie hierarchiczne, czy dalej obiektowe
uznasz za calkowita glupote.

Moja odpowiedz na to co napisałeś jest dokładnie taka sama jaką udzieliłem Jarysowi.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jejku! Ja naprawdę bardzo się cieszę, że mi doradzacie bo potrzebuję tego. Ale sprawiasz wrażenie jakbyś nie czytał mojej odpowiedzi na Twojego poprzedniego posta.
Chciałem zobaczyć czy potrafię posługiwać się instrukcją switch..case i to nie w prostych 3 linijkowych programach lecz w większych. Okazało się, że daję radę. Wcale nie powiedziałem, że to jest najlepsze rozwiązanie dla tego programiku.
A jeśli uważacie, że po jednym takim ćwiczeniu (pomijając to co napisałem u góry) wejdzie mi to w krew to się mylicie. Powtarzam, że było to tylko ćwiczenie mające sprawdzić moje zrozumienie tematu: instrukcja switch..case.
Jeśli zechcę napisać taki program aby się nim przed kimś pochwalić to na pewno przebuduję go na wersję z funkcjami.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Mam pewien problem z dzieleniem w Pascalu. W jaki sposób zapisać wynik, aby był bardziej czytelny? To znaczy interesują mnie tylko dwa miejsca po przecinku. Przykładowy zły wynik 45,987656378E+001 dobry wynik 45,99. Wiem, że to sie da zrobić, ale zapomniałem jak.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 13.10.2007 o 14:10, Krakers15 napisał:

Mam pewien problem z dzieleniem w Pascalu. W jaki sposób zapisać wynik, aby był bardziej czytelny?
To znaczy interesują mnie tylko dwa miejsca po przecinku. Przykładowy zły wynik 45,987656378E+001
dobry wynik 45,99. Wiem, że to sie da zrobić, ale zapomniałem jak.


To było chyba tak (nie pamiętam dokładnie):
writeln("Zmienna a wynosi ", a:5:2); { pierwsza liczba po dwukropku to Szerokość pola (ile znaków wypisać, wliczając kropki i minusy, druga to ilość liczb po kropce }

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 13.10.2007 o 14:22, KapiX napisał:

To było chyba tak (nie pamiętam dokładnie):
writeln("Zmienna a wynosi ", a:5:2); { pierwsza liczba po dwukropku to Szerokość pola (ile
znaków wypisać, wliczając kropki i minusy, druga to ilość liczb po kropce }

Dzięki. Wszystko działa, tylko że jest jeden problem, o którym zapomniałem napisać. Nie chcę ograniczać liczby znaków przed kropką, tylko po. Dla ułatwienia dodam, że piszę program obliczający koszt podróży z jednego miasta do drugiego.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 13.10.2007 o 14:57, Krakers15 napisał:

Dzięki. Wszystko działa, tylko że jest jeden problem, o którym zapomniałem napisać. Nie chcę
ograniczać liczby znaków przed kropką, tylko po. Dla ułatwienia dodam, że piszę program obliczający
koszt podróży z jednego miasta do drugiego.


Zajrzałem do książki o Pascalu i jest tam napisane, że jeśli liczba do wyświetlenia jest za duża, szerokość pola jest ignorowana. Drugi sposób to określenie w miarę bezpiecznej szerokości, np.20 (no bo kto będzie kupował bilet za 1.000.000 zł, $ czy czego tam chcesz).

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

no ja naprawede nie wiem
napisałem program który wypisuje liczby od 1 do 100... (np) a on mi pokazuje tylko 100... nie wiem gdzie jest błąd :/
/

#include<iostream.h>
#include<conio.h>

main()
{
clrscr();
int i;
cout<<"program kt˘ry pokazuje liczby z przedziaˆu 1-100\n\n";
{
for (i=1;i>100;i++);
cout<<i<<",";
}
getch();
}

prosze pomózcie mi i prosze wytłumaczyć gdzie ja robie do cholery błąd ?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 16.10.2007 o 18:59, Chester001 napisał:

{
for (i=1;i>100;i++);
cout<<i<<",";
}


z tego co wiem (a wiem neiwiele) ale zdaje mi sie że po for nie powinno być średnika i cout<<i w { klamerce }
czyli:

#include<iostream>
#include<conio.h>
using namespace std;

int main()
{
cout<<"program ktory pokazuje liczby z przedzialu 1-100\n\n";
for (int i=1; i<=100; i++)
{
cout << i <<", ";
}
getch();
}

sprawdzilem, działa (w c++)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dnia 16.10.2007 o 19:10, GrooG napisał:

z tego co wiem (a wiem neiwiele) ale zdaje mi sie że po for nie powinno być średnika i cout<<i
w { klamerce }
czyli:

cout << "blablabla";
for (i=1; i>100; i++)
{
cout << i << ", ";
}

jak nie to niech ktoś mnie poprawi :]


zrobiłem tak.......... i teraz nic nie wypisuje tylko jest tekst..
no ja pieprze.. takie prroste a kurde załamało mnie :/

Udostępnij ten post


Link to postu
Udostępnij na innych stronach


#include <iostream>
using namespace std;
int main()
{

int i;
cout<<"program kt˘ry pokazuje liczby z przedzia�u 1-100\n\n";
{
for (i=1;i<=100;i++)
cout<< i;
}
system("PAUSE");
return 0;
}
Przede wszystkim to i musi być mniejsze lub równe 100 a Ty napisałeś, że ma być większe.\
Sprawdziłem ten kod, który Ci napisałem, skompilowałem i się uruchamia. Trzeba zrobić jeszcze kosmetykę bo liczby wyświetlają się jedna za drugą a to nie ładnie wygląda ale to już nie jest problem.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 16.10.2007 o 19:15, Chester001 napisał:

/.../


Po pierwsze:
Zgadza się, po ''for'' nie ma średnika; w twoim wypadku program zwiększa i 100 razy i powtarza średnik, czyli pustą instrukcję, po czym przechodzi dalej wypisując tylko 100.

Po drugie:
Zły warunek wyjścia z pętli for, tak jak Ci napisał GrooG, powtarzasz dopóki i<=100, bo w Twoim przypadku powtarzasz dopóki i>100, a już na wejściu do pętli warunek nie jest spełniony, dlatego nie wchodzi do niej.
Linijka z for powinna wyglądać tak:
for (i=1;i<=100;i++)

Poza tym:
Klamerki nie są konieczne w przypadku gdy powtarzana jest jedna instrukcja.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 16.10.2007 o 19:27, Klimos napisał:

> /.../

Po pierwsze:
Zgadza się, po ''for'' nie ma średnika; w twoim wypadku program zwiększa i 100 razy i powtarza
średnik, czyli pustą instrukcję, po czym przechodzi dalej wypisując tylko 100.

Po drugie:
Zły warunek wyjścia z pętli for, tak jak Ci napisał GrooG, powtarzasz dopóki i<=100,
bo w Twoim przypadku powtarzasz dopóki i>100, a już na wejściu do pętli warunek nie jest
spełniony, dlatego nie wchodzi do niej.
Linijka z for powinna wyglądać tak:
for (i=1;i<=100;i++)

Poza tym:
Klamerki nie są konieczne w przypadku gdy powtarzana jest jedna instrukcja.

a co bym musiał zrobic aby uzytkownik miał wybór z jakiego przedziału chce liczby ?
ja własnie sam kombinowałem ale zrobiłem tak ze program sie zawiesił.... :/

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 16.10.2007 o 19:36, Chester001 napisał:

a co bym musiał zrobic aby uzytkownik miał wybór z jakiego przedziału chce liczby ?
ja własnie sam kombinowałem ale zrobiłem tak ze program sie zawiesił.... :/


robisz 2 zmienne (np int a, b) potem kazesz podac poczatek i koniec (czyli a i b) i robisz for(int i=a; i<=b; i++)

edit: działa :D

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 16.10.2007 o 19:42, GrooG napisał:

> a co bym musiał zrobic aby uzytkownik miał wybór z jakiego przedziału chce liczby ?
> ja własnie sam kombinowałem ale zrobiłem tak ze program sie zawiesił.... :/

robisz 2 zmienne (np int a, b) potem kazesz podac poczatek i koniec (czyli a i b) i robisz
for(int i=a; i<=b; i++)

edit: działa :D


cout<< i; <-- zrobiłem tak.. i wypisywał coś ... ale tak szybko ze nie zdązyłem zobaczyc..

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

No bo wypisał od razu wszystkie liczby. Jeśli chcesz cokolwiek zobaczyć to dodaj instrukcję getch() lub system("pause") po instrukcji cout. Tylko, że wtedy będziesz musiał stukać w klawisze po wypisaniu każdej liczby, co przy stu liczbach może być trochę męczące. Żeby tego uniknąć dodaj w pętli for jakiś warunek np.:
for (int i=1; i<=100; i++)
{
cout << i << " ";
if ((i % 10) == 0)
system("pause");
}
Dzięki instrukcji warunkowej po wypisaniu 10 liczb będzie trzeba nacisnąć jakiś klawisz, by program kontynuował działanie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Mam takie pytanie:
cin>>a;
cin>>b;
cout<<a<<" "<<b<<"\n";

W wyniku tego, co powyżej otrzymamy:
a
b
a_b

Co trzeba zrobić, żeby program pokazał jedynie tą trzecią linię (a_b)?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 20.10.2007 o 18:22, Bimbermistrz napisał:

Co trzeba zrobić, żeby program pokazał jedynie tą trzecią linię (a_b)?

Wyczyścić ekran po drugiej linii?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 20.10.2007 o 18:22, Bimbermistrz napisał:

Mam takie pytanie:
cin>>a;
cin>>b;
cout<<a<<" "<<b<<"\n";

W wyniku tego, co powyżej otrzymamy:
a
b
a_b

Co trzeba zrobić, żeby program pokazał jedynie tą trzecią linię (a_b)?


Jakim cudem na ekranie wyświetlają się 3 linie, skoro dwie pierwsze pobierają wartości od użytkownika, a dopiero 3 je wyświetla? Możesz podać cały kod?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 20.10.2007 o 18:22, Bimbermistrz napisał:

Mam takie pytanie:
cin>>a;
cin>>b;
cout<<a<<" "<<b<<"\n";

W wyniku tego, co powyżej otrzymamy:
a
b
a_b

Co trzeba zrobić, żeby program pokazał jedynie tą trzecią linię (a_b)?

Ja widzę tylko jedną linię do wyświetlenia.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 20.10.2007 o 18:22, Bimbermistrz napisał:

Mam takie pytanie:
cin>>a;
cin>>b;
cout<<a<<" "<<b<<"\n";

W wyniku tego, co powyżej otrzymamy:
a
b
a_b

Co trzeba zrobić, żeby program pokazał jedynie tą trzecią linię (a_b)?

Ktoś już napisał, żeby wyczyścić ekran. Includujesz cstdlib (stlidb.h) i po każdym pobraniu wartości wołasz system("cls")
Inaczej w konsoli zobaczysz zarówno dane, które wpisujesz, jak i te które wypisuje program. System wpisuje komendę podaną jako string - o ile dobrze pamiętam cls czyści ekran.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Utwórz konto lub zaloguj się, aby skomentować

Musisz być użytkownikiem, aby dodać komentarz

Utwórz konto

Zarejestruj nowe konto na forum. To jest łatwe!


Zarejestruj nowe konto

Zaloguj się

Masz już konto? Zaloguj się.


Zaloguj się
Zaloguj się, aby obserwować