Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Przesyłanie wielu elementów do funkcji.

Ostatnio zmodyfikowano 2016-11-02 14:12
Autor Wiadomość
podstawa
Temat założony przez niniejszego użytkownika
Przesyłanie wielu elementów do funkcji.
» 2016-11-01 20:33:39
Witam, w moim programie próbowałam przesłać wyniki wyliczenia odległości poszczególnych punktów od środka układu współrzędnych, na końcu dodałam wskaźnik, jednak program nadal nie wyświetla poprawnych wyników. Proszę o pomoc.

C/C++
#include<iostream>
#include<ctime>
#include<cstdlib>
#include<iomanip>
#include<math.h>



using namespace std;

struct point {
    int x;
    int y;
};


const int p = 10;
point punkt[ 10 ];
// Deklaracje funkcji

float wypelnianie( int Point[ p ] ); // wype³nianie tablicy
//Point …(…); // szukanie max. oddalonego punktu
float length( int Point[ p ], double & odleglosc, int * wskodl ); // odleg³oœæ punktu od œrodka wsp.
void drukowanie( int Point[ p ], double & odleglosc, int * wskodl ); // drukowanie tablicy

int main()
{
   
    double odleglosc = 0;
    int Point[ p ];
    int * wskodl = & Point[ 0 ];
    wypelnianie( Point );
    length( Point, odleglosc, wskodl );
    drukowanie( Point, odleglosc, wskodl );
   
}
// Definicje funkcji
float wypelnianie( int Point[ p ] )
{
    srand( time( NULL ) );
    for( int i = 0; i < 10; i++ )
    {
        punkt[ i ].x = rand() % 198 - 99;
        punkt[ i ].y = rand() % 198 - 99;
    }
}

float length( int Point[ p ], double & odleglosc, int * wskodl )
{
    for( int i = 0; i < 10; i++ )
    {
        odleglosc = sqrt( pow( punkt[ i ].x, 2 ) + pow( punkt[ i ].y, 2 ) );
        wskodl++;
    }
    return odleglosc;
}

void drukowanie( int Point[ p ], double & odleglosc, int * wskodl )
{
    for( int i = 0; i < 10; i++ )
    {
        odleglosc = length( Point, odleglosc, wskodl );
        cout << "Punkt " << i << " o wspolrzednych: (" << punkt[ i ].x << "," << punkt[ i ].y << ") jest oddalony o " << odleglosc << endl;
    }
}
P-153209
podstawa
Temat założony przez niniejszego użytkownika
» 2016-11-01 20:55:22
wiem, że mogę wypisać wszystkie odległości za pomocą jednej funkcji, jednak w tym zadaniu mam napisać osobną funkcję do obliczania odległości
P-153214
carlosmay
» 2016-11-01 21:23:20
tym zadaniu mam napisać osobną funkcję do obliczania odległości
C/C++
#include <iostream>
#include <random>
#include <iomanip>
#include <array>
using namespace std;

constexpr int SIZE { 10 };
std::random_device rd;
std::mt19937 gen( rd() );


struct Point {
    int x;
    int y;
    float distanceFromCenter;
   
};

void fill( std::array < Point, SIZE >& points ); // wypełnia tablicę
Point maxDistance( std::array < Point, SIZE >& points ); //zwraca najdalej odsunięty punkt
float currentDist( const Point & point ); // osobna funkcja oblicza odległość
void print( std::array < Point, SIZE >& points ); // drukowanie tablicy

int main()
{
    std::array < Point, SIZE > points;
    fill( points );
    print( points );
    Point maxDistPoint = maxDistance( points );
    cout << "Najdalszy punkt od poczatku ukladu wspolrzednych: x = "
    << maxDistPoint.x << " oraz y = " << maxDistPoint.y << " a, odleglosc wynosi "
    << maxDistPoint.distanceFromCenter << '\n';
}
// Definicje funkcji
void fill( std::array < Point, SIZE >& points )
{
    std::uniform_int_distribution < int > dist( - 99, 99 );
    for( int i = 0; i < 10; i++ )
    {
        points[ i ].x = dist( gen );
        points[ i ].y = dist( gen );
        points[ i ].distanceFromCenter = currentDist( points[ i ] );
    }
}

Point maxDistance( std::array < Point, SIZE >& points )
{
    Point maxDistPoint = points[ 0 ];
    for( int i { 1 }; i < 10; i++ )
    {
        if( points[ i ].distanceFromCenter > maxDistPoint.distanceFromCenter ) {
            maxDistPoint = points[ i ];
        }
    }
    return maxDistPoint;
}

float currentDist( const Point & point )
{
    return sqrt( pow( point.x, 2 ) + pow( point.y, 2 ) );
}

void print( std::array < Point, SIZE >& points )
{
    for( int i = 0; i < points.size(); i++ )
    {
        cout << "Punkt " << i + 1 << " o wspolrzednych: (" << points[ i ].x << "," << points[ i ].y << ") jest oddalony o " << points[ i ].distanceFromCenter << endl;
    }
}
P-153215
podstawa
Temat założony przez niniejszego użytkownika
» 2016-11-01 21:28:42
czy istnieje jakiś prostszy sposób? jestem początkująca i niewiele rozumiem z tego kodu :(
P-153217
carlosmay
» 2016-11-01 21:37:03
Czego nie rozumiesz?
P-153219
podstawa
Temat założony przez niniejszego użytkownika
» 2016-11-01 21:49:53
constexpr int SIZE { 10 };
std::random_device rd;
std::mt19937 gen( rd() );

na przykład tego, na dodatek ten program mi nie działa

nie da się przekształcić mojego programu, tak żeby wysyłał odpowiednie odległości do każdego punktu ?
P-153222
carlosmay
» 2016-11-01 21:58:53
constexpr int SIZE { 10 };
 jest równoważne
const int SIZE = 10;


C/C++
std::random_device rd;
std::mt19937 gen( rd() );
<random>

std::array - cplusplus
std::array - cppreference

na dodatek ten program mi nie działa
Włącz C++11 w opcjach kompilatora.
P-153224
podstawa
Temat założony przez niniejszego użytkownika
» 2016-11-01 22:07:07
Dziękuję, postaram się zrozumieć ten kod.
P-153227
« 1 » 2
  Strona 1 z 2 Następna strona