FrostEvil Temat założony przez niniejszego użytkownika |
potęgowanie za pomocą funkcji » 2017-10-30 14:12:25 Witam chciałbym aby ktoś podpowiedział mi co jest nie tak z owym programem:
#include <iostream>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */ using namespace std;
int dane( int E, int potega[], int wykladnik[]) { int i,j; int wynik[E]; for(i=0;i<E;i++) { for(j=0;j<potega[E];j++) { wynik[j]=wynik[j]*wykladnik[j]; } } return wynik; }
int main(int argc, char** argv) {
int D,i; cout<<"Podaj ilosc przypadkow"<<endl; cin>>D; int potega1[D], wykladnik1[D]; if(D>0 && D<11) {
for(i=0;i<D;i++) { cout<<"Podaj potege"<<endl; cin>>*potega1; cout<<"Podaj wykladnik"<<endl; cin>>wykladnik1; } }
cout<<dane(D,potega1[D],wykladnik1[D]);
return 0; }
uczę się sam i chciałem napisać program który potęguje za pomocą funkcji, plan był taki żeby w main wczytać dane czyli ilość wykonanych obliczeń i przyporządkować potęge/ wykładnik do tablic następnie w funkcji następuje obliczenie oraz zwrócenie tablicy z wynikami potem wywołanie funkcji w funkcji main funkcji która oblicza wynik i wyświetlenie jej. Główny problem mam z wyświetleniem funkcji oraz z podaniem danych do funkcji obliczającej... |
|
pekfos |
» 2017-10-30 14:24:27 wynik[ j ] = wynik[ j ] * wykladnik[ j ];
|
Ta linia wygląda dobrze, chociaż nie jestem pewien, czy w ogóle ma sens w tym programie. Poza tym, cała reszta jest błędna. Ani jednego poprawnego użycia tablicy. Tzn poza tą linią - ta linia wygląda dobrze. |
|
Anim |
» 2017-10-30 14:26:33 Może jeszcze dodam, że warto rozpocząć Kurs na tej stronie od początku.
Bo jak napisał @pekfos, praktyczie wszystko źle. Poczytaj o tablicach, następnie o tablicach dynamicznych, do tego sposób przekazywania argumentów do funkcji...
I dodatkowo, wstawiaj kod w znaczniki: [cpp] KOD [/cpp] |
|
FrostEvil Temat założony przez niniejszego użytkownika |
poprawienie » 2017-10-30 16:17:26 #include <iostream>
using namespace std; int oblicz( int a, int p[], int w[] ) { int i, j; int * wynik = new int[ a ]; for( j = 0; j < a; j++ ) { wynik[ j ] = 1; for( i = 1; i <= p[ j ]; i++ ) { wynik[ j ] = wynik[ j ] * w[ j ]; } } return * wynik; delete[] wynik; }
int main( int argc, char ** argv ) { int i, D; cout << "Podaj ilosc powtorzen" << "\n"; cin >> D; int * potega = new int[ D ]; int * wykladnik = new int[ D ]; for( i = 0; i < D; i++ ) { cout << "podaj potege" << "\n"; cin >> potega[ i ]; cout << "podaj wykladnik" << "\n"; cin >> wykladnik[ i ]; } int m = oblicz( D, potega, wykladnik ); cout << m; delete[] potega; delete[] wykladnik; return 0; } poczytałem troche i poprawiłem do tego stanu, nie wiem czy formalnie cały program jest dobrze napisany ale liczyć liczy poprawnie aczkolwiek jest jeszcze 1 rzecz która muszę poprawić a mianowicie wyświetlenie tablicy pobranej z funkcji. 1. czy wiersz int m = oblicz( D, potega, wykladnik ); jest poprawny? mianowicie czy do funkcji przekazana jest tablica? 2. jak wyświetlić wyniki pobrane z funkcji oblicz? Program działa ale wyświetla mi tylko pierwsze obliczenie |
|
pekfos |
» 2017-10-30 16:22:46 return * wynik; delete[] wynik; |
Nie zwalniasz tablicy i po co w ogóle ta tablica, skoro zwracasz jedną liczbę? |
|
FrostEvil Temat założony przez niniejszego użytkownika |
» 2017-10-30 16:30:31 właśnie chciałbym z tej funkcji zwrócić tablicę i wyświetlić ją w main ale nie wiem jak ... ;/ |
|
YooSy |
» 2017-10-30 16:39:23 Funkcja powinna zwracać int * , return wynik; . W main int * wsk_na_zwracana_tablice = oblicz( D, potega, wykladnik ); i zwolnienie pamięci też w main delete[] wsk_na_zwracana_tablice; . |
|
FrostEvil Temat założony przez niniejszego użytkownika |
» 2017-10-30 16:56:18 invalid conversion from 'int*' to 'int' [-fpermissive] taki błąd mi wyskakuje :/
|
|
« 1 » 2 3 |