Zaloguj się, aby obserwować  
Bartuc

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

1979 postów w tym temacie

Dnia 29.01.2010 o 00:48, marcinsud napisał:

getch też jest mało przenośne, bo chyba tylko na windowsowych działa.

Ale getchar(), które robi w standardowych warunkach (bez przekierowania strumieni) to samo, już nie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Visual Basic C++ (Lepiej Konsola , Gui czy CLR ?)

Czy funkcja _kbhit() jest najlepszym wyborem ?


W jaki sposób przejmować naciśnięte klawisze nawet gdy okno jest zminimalizowane ?

w C++

oraz imitacja naciśnięcia klawisza przez program

Zamierzam napisać filtracje key''ow z klawiatury blokującą potencjalnie nie bezpieczne kombinacje

dzięki z góry z pomoc

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dopiero zacząłem tablice wielowymiarowe i mam już problem :/
W tym kodzie:

#include <stdio.h>
main ()
{
float macierz[2][3]={
{1, 2, 3},
{1.01, 2.3, 4}
};
printf("%f",macierz[2][3]);
getchar ();
}

jak skompiluję, to wyświetla mi tylko 0.00000000 , a chcę, żeby wyświetliło macierz z floata, jak to zrobić?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dnia 20.02.2010 o 13:24, Harrolfo napisał:

#include <stdio.h>
main ()
{
float macierz[2][3]={
{1, 2, 3},
{1.01, 2.3, 4}
};
printf("%f",macierz[2][3]);
getchar ();
}


Tablice są numerowane od 0 więc nie istnieje element tablicy[2][3], jeżeli chcesz się odwołać do ostatniego elementu tej tablicy to spróbuj macierz[1][2];


Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Błędy:
7 C:\Dev-Cpp\macierz.cpp too many initializers for `float[2]''
7 C:\Dev-Cpp\macierz.cpp too many initializers for `float[1][2]''

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jak chcesz wyswietlic cala tablice to musisz zrobic petle w petli.
while (i=0;i<2;i++)
while (j=0;j<3;j++)
printf("%f",macierz[ i ][j])

Nie wiem czy to najlepszy sposob ale powinien dzialac;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ale chcesz wyrzucic na ekran cala tablice tak? A nie tylko jedna "komorke" ?
Bo z tego co mnie nauczono to zeby wyswietlic cala tablice musisz wrzucic ten moj kod zamiast twojej linijki ( printf("%f",macierz[2][3]); ) .

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ok, zrobię tak, jak piszesz, ale jakoś wydawało misię dziwnie whilem.. Ale dzięki
EDIT: Dla whila są błędy, dla fora te błędy w linii 7, o których pisałem...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Kolejny problem. W tym programie:

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
main ()
{
int i;
double poczatek,koniec,krok;
printf("Podaj wartosc poczatkowa: \n");
scanf("%lf",&poczatek);
printf("Podaj wartosc koncowa: \n");
scanf("%lf",&koniec);
printf("Podaj krok: \n");
scanf("%lf",&krok);
while(poczatek>=0&&koniec>=poczatek&&krok<koniec)
{
{
printf("%lf\t",log(poczatek));
printf("%lf\n",poczatek);
poczatek=poczatek+krok;
}
system("pause");
return 0;
}
while(poczatek<0||koniec<poczatek||krok<=koniec)
{
printf("Co najmniej jeden z podanych argumentow jest niepoprawny\n\a");
system("pause");
return 0;
}
}

Powinno mi wypisac kolejne wartości logarytmów, a wypisuje tylko pierwszą - why?
I następnie tak bym chciał zmodyfiokowac polecenia, żeby po każdych 5 liniach zatrzymywał się i prosił o naciśnięcie jakiegoś klawisza, pomożecie?

EDIT: rob006 - wiedziałem, że bedzie for ;)
Ale dlaczego mi wyświetla to jako jeden wiersz, skoro miało byc jako jedna macierz, tj 2 wiersze i 3 kolumny?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 20.02.2010 o 16:30, Harrolfo napisał:

Ok, zrobię tak, jak piszesz, ale jakoś wydawało misię dziwnie whilem.. Ale dzięki
EDIT: Dla whila są błędy, dla fora te błędy w linii 7, o których pisałem...


#include <stdio.h>
main ()
{
int i,j;
float macierz[2][3] = {
{1, 2, 3},
{1.01, 2.3, 4}
};

for(i=0;i<2;i++){
for(j=0;j<3;j++)
printf("%f ",macierz[i][j]);
}
return 0;
}

Manzi dobrze podpowiadał ci że trzeba użyć pętli aby wyświetlić każdy element tablicy osobno, ale posługiwać whilem to on się nie potrafi. :P

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 20.02.2010 o 13:58, Harrolfo napisał:

Błędy:
7 C:\Dev-Cpp\macierz.cpp too many initializers for `float[2]''
7 C:\Dev-Cpp\macierz.cpp too many initializers for `float[1][2]''


Chodziło m o toi byś to zmienił:
printf("%f",macierz[2][3]);
odwołujesz się tutaj do elementu tablicy [2][3] który nie istnieje ponieważ elementy w tablicy są numerowane od zera np. tab[5] posiada elementy tablicy od 0 do 4.


Kod który u mnie działa:

#include <stdio.h>
main ()
{
float macierz[2][3]={
{1, 2, 3},
{1.01, 2.3, 4}
};

for(int i = 0; i < 2; i++){
for(int j = 0; j < 3; j++){
printf("%f ", macierz[ i ][j]);
}
printf("\n");
}

getchar ();
}

EDIT poprawiłem forum myślało że używałem znacznika do podkreślania tekstu :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

No działa, ale wypisuje same zera, a nie to, co wpisałem w tablicy..
EDIT: Ok, znalazłem błąd - ma być macierz [ i ][j]

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jeżeli chodzi o tablice to ja też mam mały problem
mam w programie tablicę

bool t[16][24][3][2];

i funkcję

bool tabliczka()
{
bool tablica[16][24][3][2];
// nadanie wartości tablicy
return tablica;
}

i chcę żeby na początku każdej wykonanej pętli tablica wracała do wartości z tej funkcji, próbowałem robić tak:

t=tabliczka;

oczywiście nie działa. Ktoś ma jakiś pomysł?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Twoja funkcja zwraca wartość bool a by zwrócić tablice o ile piszesz w C++ będziesz musiał użyć wskaźników.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 20.02.2010 o 17:33, Cafel napisał:

Twoja funkcja zwraca wartość bool a by zwrócić tablice o ile piszesz w C++ będziesz musiał
użyć wskaźników.

właśnie we wskażniki nie chciałem się bawić, no ale trudno, zawsze to trochyę więcej się nauczę :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 20.02.2010 o 17:56, zbysheck napisał:

> Twoja funkcja zwraca wartość bool a by zwrócić tablice o ile piszesz w C++ będziesz
musiał
> użyć wskaźników.
>
właśnie we wskażniki nie chciałem się bawić, no ale trudno, zawsze to trochyę więcej
się nauczę :)

Ewentualnie możesz zainicjalizować globalnie tablice i w funkcji nadawać jej parametry, ewentualnie tablica może być argumentem funkcji jeżeli nie chcesz bawić się z wskaźnikami.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Co mam zmienić w podanym niżej programie, żeby nie wyskakiwało mi undefined reference to sqrt?

#include <stdio.h>
#include <math.h>
main ()
{
double a,krok,koniec,p;
printf("Podaj wartosc poczatkowa: \n");
scanf("%lf",&a);
printf("Podaj wartosc koncowa: \n");
scanf("%lf",&koniec);
printf("Podaj wartosc krok: \n");
scanf("%lf",&krok);
if(krok<0||krok>koniec||a<0)
{
printf("Nalezy mienic jedna z wartosci");
}
else
{
for(a<koniec;a=koniec;a=a++)
{
printf("%lf\n",a);
p=sqrt(a);
printf("%lf\t",p);
}
}
}

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ć