Zaloguj się, aby obserwować  
Bartuc

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

1979 postów w tym temacie

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

int main (int)
{
int liczba1, liczba2;
int wynik;
cout<<"Podaj cyfry: "<<endl;
cin>>liczba1>>liczba2;
wynik=kwadrat();
cout<<"Kwadrat liczby wynosi:"<<wynik<<endl;
return 0;
}
int kwadrat( )
{
int wynik;
int liczba1, liczba2;
wynik=liczba1*liczba2;
return 0;
}
Nie wiem co źle zrobiłem. Nie wyświetla mi wyniku. Za każdym razem wyświetla zero. Nie pokazuje żadnego błędu. Czy ktoś może mi pomóc?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 10.07.2007 o 11:02, pretorianie napisał:

int kwadrat( )
{
int wynik;
int liczba1, liczba2;
wynik=liczba1*liczba2;
return 0;
}
Nie wiem co źle zrobiłem. Nie wyświetla mi wyniku. Za każdym razem wyświetla zero. Nie pokazuje
żadnego błędu. Czy ktoś może mi pomóc?

Funkcja kwadrat zawsze zwraca 0 (return 0) które przepisujesz na wynik.

To prawidłowa wersja funkcji kwadrat

int kwadrat(int liczba){
return liczba*liczba;
}

Musisz przecież podać liczbę z jakiej kwadrat liczysz.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Rozwiązałem to tak i działa!
#include <iostream>
using namespace std;
int kwadrat( );

int main (int)
{
kwadrat();
return 0;
}
int kwadrat( )
{
int wynik;
int liczba1;
cout<<"podaj cyfre: "<<endl;
cin>>liczba1;
wynik=liczba1*liczba1;
cout<<"Kwadrat liczby wynosi:"<<wynik<<endl;
return 0;
}

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Działać będzie, ale gdybyś potrzebował wartości obliczonej przez funkcję kwadrat do jeszcze innych wyliczeń, to nie byłoby już tak różowo.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 10.07.2007 o 11:26, Treant napisał:

Działać będzie, ale gdybyś potrzebował wartości obliczonej przez funkcję kwadrat do jeszcze
innych wyliczeń, to nie byłoby już tak różowo.

No to jak powinien zrobić? Jestem naprawdę początkkujący i wasze wskazówki bardzo mi pomogą/

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Moim zdaniem to nie jest rozwiązanie problemu a raczej ominięcie go bo równie dobrze mogłeś napisać:

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

int main (int)
{
nt wynik;
int liczba1;
cout<<"podaj cyfre: "<<endl;
cin>>liczba1;
wynik=liczba1*liczba1;
cout<<"Kwadrat liczby wynosi:"<<wynik<<endl;
return 0;
}

Co jest znacznie prostsze i też działa. I takie pytanie funkcja kwadrat ma podnosić liczbę do kwadratu czy mnożyć dwie liczby? A program działał Ci nie tak jak chciałeś gdyż do funkcji nie przekazywałeś żadnej liczby a jako wynik funkcji zwracałeś zawsze 0.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 10.07.2007 o 11:26, pretorianie napisał:

A liczbę z której liczę kwadrat podałem w zmiennej liczba1. A możesz mi podać jak Ty myślałeś
żeby zrobić całość?


include <iostream>
using namespace std''

int kwadrat(int liczba){
return liczba*liczba;
}

int main(){
cout<<"Podaj liczbe";
int liczba;
cin>>liczba;
cout<<"Kwadrat z "<<liczba<<" wynosi "<<kwadrat(liczba);
}

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 10.07.2007 o 11:27, pretorianie napisał:

> Działać będzie, ale gdybyś potrzebował wartości obliczonej przez funkcję kwadrat do jeszcze

> innych wyliczeń, to nie byłoby już tak różowo.
>
No to jak powinien zrobić? Jestem naprawdę początkkujący i wasze wskazówki bardzo mi pomogą/


to tak każde określenie funkcja ma składnię:

int funkcja(char a)

i tak int to typ wyniku zwracany przez funkcję (w tym wypadku liczby całkowite)
funkcja nazwa funkcji
a - nazwa zmiennej widzianej wewnątrz funkcji
char typ zmiennej przekazanej do funkcji

uniwersalny zapis funkcji kwadrat wygląda w tym wypadku tak:

int kwadrat (int liczba)
{
liczba*=liczba;
return liczba;
}

dzięki temu możesz funkcji użyć w ten sposób wynik=kwadrat(sierotka_marysia) jeśli pod zmienną sierotka_marysia trzymasz jakąś liczbę całkowitą

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

#include <iostream>
using namespace std;
int kwadrat( int liczba);

int main (int)
{
int liczba;
cout<<"Podaj cyfre: "<<endl;
cin>>liczba;
return liczba*liczba;

}
int kwadrat( int liczba)
{
return liczba*liczba;
}
jeszcze tak zrobiłem i też jest ok

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 10.07.2007 o 11:26, Treant napisał:

Działać będzie, ale gdybyś potrzebował wartości obliczonej przez funkcję kwadrat do jeszcze
innych wyliczeń, to nie byłoby już tak różowo.

#include <iostream>
using namespace std;
int kwadrat( int liczba);

int main (int)
{
int liczba;
cout<<"Podaj cyfre: "<<endl;
cin>>liczba;
return liczba*liczba;

}
int kwadrat( int liczba)
{
return liczba*liczba;
}
Czy teraz będę miał możlliwość wykorzystania wartości obliczonej przez funkcję?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

program nie powinien zwracać na wyjściu czegoś innego niż 0 jeśli się kończy bez błędów a twój wyrzuca liczba*liczba więc osoba która by chciała użyć twojego programu kiedyś w większym projekcie mogła by uznać że wykonała coś źle. funkcja kwadrat jest już zapisana dobrze ale nie wyświetlasz jej na ekranie. A i nie wiem czy wiesz ale zmienna liczba użyta w main jest inną zmienną niż zmienna liczba użyta w funkcji kwadrat.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 10.07.2007 o 11:49, Nufiko napisał:

program nie powinien zwracać na wyjściu czegoś innego niż 0 jeśli się kończy bez błędów a twój
wyrzuca liczba*liczba więc osoba która by chciała użyć twojego programu kiedyś w większym projekcie
mogła by uznać że wykonała coś źle. funkcja kwadrat jest już zapisana dobrze ale nie wyświetlasz
jej na ekranie. A i nie wiem czy wiesz ale zmienna liczba użyta w main jest inną zmienną niż
zmienna liczba użyta w funkcji kwadrat.

Tak wiem i zmienna w main() zamieniłem na liczba1. a końcową część main() zakończyłem
cout<<"Kwadrat wynosi"<<kwadrat(liczba);
return 0;
teraz ok?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 10.07.2007 o 11:55, pretorianie napisał:

Tak wiem i zmienna w main() zamieniłem na liczba1. a końcową część main() zakończyłem
cout<<"Kwadrat wynosi"<<kwadrat(liczba);
return 0;
teraz ok?


Jeśli w main zmienna poprzednio liczba to teraz liczba 1 to w przekazaniu zmiennej do funkcji powinieneś użyć też zmiennej liczba1 czyli kwadrat(libczba1) i będzie ok

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dnia 10.07.2007 o 12:04, Nufiko napisał:


Jeśli w main zmienna poprzednio liczba to teraz liczba 1 to w przekazaniu zmiennej do funkcji
powinieneś użyć też zmiennej liczba1 czyli kwadrat(libczba1) i będzie ok

Czyli teraz będę mógł użyć już obliczoną wartość przez funkcję int kwadrat(int liczba1) do dalszych obliczeń, Wynik będzie zachowany do dalszych celów? Nie będzie przypisany tylko do tej części programu? Nie ucieknie mi?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 10.07.2007 o 12:07, pretorianie napisał:


>
> Jeśli w main zmienna poprzednio liczba to teraz liczba 1 to w przekazaniu zmiennej do
funkcji
> powinieneś użyć też zmiennej liczba1 czyli kwadrat(libczba1) i będzie ok
Czyli teraz będę mógł użyć już obliczoną wartość przez funkcję int kwadrat(int liczba1) do
dalszych obliczeń, Wynik będzie zachowany do dalszych celów? Nie będzie przypisany tylko do
tej części programu? Nie ucieknie mi?


niestety tu cię zmartwię bo wynik jest usuwany w momencie zakończenia funkcji. Znaczy funkcja się kończy i wyrzuca z siebie to co jest w return i ty musisz się postarać żeby to obsłużyć. Teraz to obsługujesz poprzez wyświetlenie tego na ekranie ale po tej operacji już do niego nie sposób się dostać. Żeby go zachować powinieneś go przypisać do jakiejś zmiennej. Czyli twój kod powinien wyglądać tak:

#include <iostream>
using namespace std;
int kwadrat( int liczba);

int main (int)
{
int liczba1, wynik;
cout<<"Podaj cyfre: "<<endl;
cin>>liczba1;
cout<<wynik=kwadrat(liczba1);
return 0;
}

int kwadrat( int liczba)
{
return liczba*liczba;
}

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

No dobra, a jak to się ma do dwoch zmiennych? Tzn tutaj wpisywaliśmy int kwadrat(int liczba) i zmienna w main() rowniez byla "liczba" a teraz chce dodać dwie wartosci co mam wpisac w int suma ( int ?) przeciez sa dwie nazwy? jedna zmienna i druga zmienna? Nie moge sobie z tym poradzic

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 10.07.2007 o 12:27, pretorianie napisał:

No dobra, a jak to się ma do dwoch zmiennych? Tzn tutaj wpisywaliśmy int kwadrat(int liczba)
i zmienna w main() rowniez byla "liczba" a teraz chce dodać dwie wartosci co mam wpisac w int
suma ( int ?) przeciez sa dwie nazwy? jedna zmienna i druga zmienna? Nie moge sobie z tym
poradzic


robisz coś takiego int suma(int a, int b) i odwołujesz się do funkcji np cout<<suma(liczba1, liczba2)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Mam problem z MSVC++ 2005 Express. Chcę odczytać dane binarne z pliku, dołączam plik <fstream>, dopisuję using namespace std; a przy linkowaniu otrzymuję dwa błędy:
- "error LNK2019: unresolved external symbol "__declspec(dllimport) public: class std::basic_istream<char,struct std::char_traits<char> > & __thiscall std::basic_istream<char,struct std::char_traits<char> >::seekg(long,enum std::ios_base::seekdir)"
- error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall std::basic_fstream<char,struct std::char_traits<char> >::open(char const *,int)"

Wiem, że te błędy oznaczają brak deklaracji funkcji. BTW: Jak w bibliotece standardowej może brakować deklaracji funkcji?

Z kolei jak skorzystam z nagłówka <fstream.h> i usunę using namespace std; otrzymam inny błąd: fatal error LNK1104: cannot open file ''msvcirtd.lib''.

Dodatkowe rozszerzenia w moim MSVC++ 2005:
- MS DirectX 9.0 SDK February 2007
- MS Platform SDK

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ć