Tablice - pobieranie danych z konsoli

0

Witam
Mam problem z dwoma zadaniami. Pisałam w C, ale nie z pobieraniem danych z konsoli :/ Kompletnie nie wiem jak zapisać te kody.

  1. ** Napisz funkcję, która otrzymuje dwa argumenty: dodatnią liczbę całkowitą n oraz dwie n-elementowe tablice tab o elementach typu double przechowujące n-wymiarowe wektory i
    zwraca jako wartość iloczyn skalarny wektorów otrzymanych w argumentach. **

  2. ** Napisz funkcję, która jako argumenty otrzymuje dwa napisy i zwraca wartość 1, gdy
    pierwszy napis jest wcześniejszy w kolejności leksykograficznej i 0 w przeciwnym **
    przypadku.

1

Co do pierwszego, to kod:

#include <stdio.h>

double scalarMult(unsigned n, double tab1[], double tab2[]) {
	double m = 0;
	for (int i = 0; i < n; i++) {
		m += tab1[i]*tab2[i];
	}
	return m;
}

int main(int argc, char **argv) {
	unsigned s = 3;
	double a[3] = {1, 2, 3};
	double b[3] = {1, 2, 3};
	printf("%lf\n", scalarMult(s, a, b));  // -> 14.000
	return 0;
}

Nie zrozumiałem tylko czy Masz jakiś problem z czytaniem z konsoli.

A drugie jest zrobione tutaj: https://4programmers.net/Forum/C_i_C++/320896-prosze_o_pomoc_porownywanie_leksykograficzne?p=1557081#id1557081

0

"W każdym z poniższych zadań należy napisać zarówno osobną funkcję zgodną ze specyfikacją
zadania, jak i korzystającą z tej funkcji funkcję main, której zadaniem jest pobranie
parametrów z wiersza polecenia (argc, argv). Jeśli użytkownik nie podał parametrów, lub
podał nieprawidłowe, program powinien wypisać właściwy sposób użycia oraz zakończyć się
niezerowym kodem wyjścia.
"
Kod z pierwszego zadania jest dla mnie czytelny, ale za to mam problem z interpretacją drugiego. Mogę poprosić o drobne komentarze?

0

Patrząc na specyfikację, to Tobie wystarczy uproszczona wersja, strcmp ze standartowej biblioteki:

int compare_strings(char a [], char b []) {
    while (*a && *b) {
        if (*a > *b) 
            return 1;
        a++;
        b++;
    }
    return 0;
}

Sprawdzając znak po znaku, aż jeden ze stringów się skończy, robi nic gdy pierwszy jest leksykograficznie nie większy niż drugi, natychmiastowo zwraca 1 gdy znank z pierwszego będzie większy, i, oczywiście gdy pętla się skończy zwraca 0 (nie wystąpił warunek if).

1 użytkowników online, w tym zalogowanych: 0, gości: 1