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

Napisz program który oblicza podaną sumę z wektorami [C]

Ostatnio zmodyfikowano 2017-02-17 20:43
Autor Wiadomość
nowawieza
Temat założony przez niniejszego użytkownika
Napisz program który oblicza podaną sumę z wektorami [C]
» 2017-02-15 15:49:24
Zdjęcie zadania: https://scr.hu/XGqGPW
Treść zadania:
Napisz program który oblicza s
x,y to wektory n elementowe l. rzeczywistych.

s= pierwiastek z modułu, a w module jest znak sumy (sigma?) od i=1 do n (xi-yi).

Proszę o pomoc w zrobieniu tego albo nawet zrobienie tego za mnie jeśli ktoś wie jak to szybko zrobić.
Taki typ zadania dostanę na kolokwium, a totalnie nie wiem jak się zabrać za takie zadanie z wektorami itd.

Dodam, że to pierwszy semestr informatyki i programowania w języku C. Więc fajerwerków powinno tu nie być. Pewnie klasyczne zadanie ;/

P-157747
hit
» 2017-02-15 16:17:18
Prosta implementacja wzoru.

"Taki typ zadania dostanę na kolokwium, a totalnie nie wiem jak się zabrać za takie zadanie z wektorami itd."
To co robiłeś(aś) cały semestr?

Będziesz potrzebował informacji o tablicach (użycie jako wektor), pętlach (np. for) oraz bibliotekę cmath do obliczenia pierwiastka. Lepiej zacząć cokolwiek samemu, wtedy można liczyć na pomoc.

Edit:
I jeszcze abs do obliczenia wartości bezwzględnej, ale to jest również w cmath.

Edit2:

http://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Tablice-jednowymiarowe/292
http://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Petla-for/294
P-157748
nowawieza
Temat założony przez niniejszego użytkownika
» 2017-02-15 22:12:20
Postarałem się coś napisać ale robię na pewno wiele błędów.
Proszę, pomóżcie to zrobić :(

C/C++
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
const int N = 1000;
float dim( float[], float[], int );

int main()
{
    float x, y, iks[ N ], igr[ N ], xd;
    int n, i;
    do {
       
        printf( "Podaj ilosc wymiarow przestrzeni: " );
        scanf( "%d", & n );
    } while( n < 1 );
   
    for( i = 0; i < n; i++ )
    {
        printf( "\nPodaj wspolrzedna x  punktu: " );
        scanf( "%f", & iks[ i ] );
        printf( "\nPodaj wspolrzedna y  punktu: " );
        scanf( "%f", & igr[ i ] );
        printf( "\n\t\t %.1f,%.1f", iks[ i ], igr[ i ] );
    }
    xd = dim( iks, igr, n );
    printf( "\n%f", xd );
   
   
    return 0;
}

float dim( float iks[], float igr[], int n )
{
    int i;
    float s = 0;
    for( i = 0; i < n; i++ )
    {
        s += sqrt( abs( iks[ i ] - igr[ i ] ) );
    }
   
    return s;
}
P-157776
maly7
» 2017-02-15 22:29:52
Co do twojej funkcji diff:
for( i = 0; i < n; i++ )
{
    s += sqrt( abs( iks[ i ] - igr[ i ] ) );
}
Teraz masz sumę pierwiastków, najpierw dodaj wszystkie różnice, a dopiero po skończeniu pętli spierwiastkuj moduł tej sumy :)
Czyli:
for( i = 0; i < n; i++ )
    s += iks[ i ] - igr[ i ];
s = sqrt(abs(s));
P-157777
nowawieza
Temat założony przez niniejszego użytkownika
» 2017-02-15 22:44:26
Ok, dzięki wielkie za to.

Ale cała reszta jest dobra?

Na początku kodu jest
C/C++
printf( "Podaj ilosc wymiarow przestrzeni: " );
scanf( "%d", & n );

To powinienem zostawić? Mi się wydaje, że tu odgórnie powinno być ustalone const int n=2

P-157778
maly7
» 2017-02-15 22:48:13
Ilość wymiarów przestrzeni jest w tym wypadku stała (2), a ty pobierasz ile elementów ma dany wektor (x i y). Po prostu zmień tekst wyświetlany przy pobieraniu zmiennej n :D
P-157781
nowawieza
Temat założony przez niniejszego użytkownika
» 2017-02-15 22:57:35
No ale nawet jeśli to dam n=4

Wtedy do wpisania mam 4 punkty.

Przecież wektor nie będzie obliczony przechodząc przez 4 punkty. No chyba, że totalnie nie rozumiem tego xD

Bo przecież jak już to liczymy odległość między dwoma punktami, a nie między trzema :/
P-157782
maly7
» 2017-02-15 23:02:58
Kieruje się zdjęciem tablicy. Jest napisane, że wektory x oraz y mają n elementów. Podane jest również, żeby obliczyć s z tego wzoru. Nie jest wyjaśnione dokładnie co to jest s więc może to być wszystko :p A jeśli s byłoby odległością, to wzór wyglądałby tak: sqrt( (x2-x1)^2 - (y2-y1)^2 )
P-157783
« 1 » 2
  Strona 1 z 2 Następna strona