Tablice wielowymiarowe - zadania z podręcznika POMOCY!

0

Zadania w załączniku, ja wiem one nie sa skomplikowane, ale jutro mam z tego zaliczenie i nic nie kumam. Prosze pomóżcie!

2

nic nie kumam

Ale w sensie, że jak? Nie kumasz jak działają tablice, czy jak działają te wielowymiarowe?
Mały tip:
Zwykła tablica:

tab = {1,2,3,4,5,6}

dostęp do elementu - 1 to tab[0], 2 to tab[1] itd.
tablica wielowymiarowa to inaczej tablica tablic, np:

tab2 = {{1,2,3}, {4,5,6}}

Dostęp do elementu uzyskuje się za pomocą podwójnego indeksu - tablica[rząd][kolumna]
W powyższym przykładzie 1 to tab2[0][0], 6 to tab[1][2]
Zatem jeśli w zadaniu jest suma liczb na głównej przekątnej w tablicy 3x3, to dodajesz liczby o indeksach [0][0], [1][1] i [2][2].

1

No ok, tylko jak zapisac w programie? A mógłbyś mi to zaimplementować w zadaniu w sensie stworzyc ten program? Prosze, bo jutro kilka tych zadan moze sie pojawić na teście

Tego typu program (sumowanie elementów tablicy) powinieneś być w stanie stworzyć sam, trzymając się pewnych wytycznych:
0. Nie wiadomo, czy tablica będzie dana, czy trzeba ją stworzyć. Ani czy można tę operację można przeprowadzić w main(), czy trzeba wydzielić do osobnej funkcji. Więc tym się na razie nie zajmujemy.

  1. Tworzysz zmienną pod którą przechowasz sumę i ustawiasz ją początkowo na 0
suma = 0
  1. Przy pomocy pętli for (skoro rozmiar tablicy jest znany) iterujesz po tablicy i dodajesz stosowne elementy do sumy
for (indeks = 0; indeks < ilość_kolumn; ++indeks [czyli indeks = indeks+1]) {
    suma += tablica[indeks][indeks]
}

Elementy na głównej przekątnej w tablicach NxN mają to do siebie, że indeksy rzędów i kolumn są sobie równe, zatem wystarczy jedna pętla. W innym przypadku potrzebne byłyby dwie - jedna dla rzędów, druga, zagnieżdżona w pierwszej, dla kolumn.

  1. Wypisujesz wynik dodawania
6
#include <stdio.h>
#include <iostream>

#define c char
#define s __int32
#define x __int8
#define u unsigned
#define e 8
#define o 1
#define f 5

int main()
{
	u x _[e];
	c *__ = "w taki sposub nie zdasz studjuw muj drogi";
	s _____ = e;
	for(s ___=e-0;___>=NULL;___--)
	{
		_[___] = (x)__[___];
		_____ += (x)__[___];
	}
	_____ /= e;
	
	if(_____ > f)
		std::cout << "\x77\x69\x65\x6e\x6B\x73\x7A\x79\x20\x6F\x64\x20";
	else if(_____ < f)
		std::cout << "\x6\x6E\x69\x65\x6A\x73\x7A\x79\x20\x6F\x64\x20";
	else
		std::cout << "\x72\x75\x77\x6E\x79";

	std::cout << "\x35";
	return 0;
}

zadanie pierwsze jurz z glowy mam nadzieje rze pomoglem pozdrawiam

edit: oj przepraszam umknelo mi 'od' w mniejszym!!

0

Daj znać jaka była reakcja jak oddałeś zadanie zrobione przez @MexikanoS

1

@Adamoo01:
Trochę nie chciało mi się robić, ale trzymaj:
https://ideone.com/gfVobe
bez zad. 4 i 7

1

Zadanie 7 - to tylko jedna linijka kodu:

for( const auto& row : vector<vector<int>>({ {4,6,-2}, {-4,17,-2}, {9,-44,2} }) ) cout << accumulate( row.cbegin() , row.cend() , 0 ) << "\n";
0

Uśmiałem się setnie :) Chyba jeszcze nigdy nie śmiałem się z wyłącznie kodu.

Taka pomoc nie budzi mojego sprzeciwu etycznego. Cóż, Kolega Pytający długo chorował, więc różne pozytywne i negatywne rzeczy mogły się w stać.

0

ZADANIE 1

#include <iostream>

using namespace std;
void suma_srednia(int tab[])
{
    double suma=0;
    double srednia;
    for (int i=0; i<8; i++)
        suma=suma+tab[i];
    srednia=suma/8;
    cout<<"\nSrednia wynosi: "<<srednia;
    if (srednia<5)
        cout<<"\n\nSrednia jest mniejsza od 5.\n";
    if (srednia==5)
        cout<<"\n\nSrednia jest rowna 5.\n";
    if (srednia>5)
        cout<<"\n\nSrednia jest wieksza od 5.\n";
}
int main()
{
    int tablica[8]={1,2,3,4,5,6,7,8};
    for (int i=0;i<8;i++)
    {
        cout<<tablica[i]<<" ";
    }
    cout<<endl;
 suma_srednia(tablica);
}
1

W sumie to miałem wolny kwadrans i pochyliłem się nad tymi zadaniami.

#include <iostream>
#include <time.h>

// Napisz program obliczający i wyświetlający średnią arytmetyczną wartości 8-elemtnowej tablicy.
// Następnie sprawdź, czy wynik jest liczbą większą, mniejszą czy równą 5 i wypisz odpowiedni komunikat.
void zad1()
{
	#define ILOSC_ELEMENTOW 8

	int tablica[ILOSC_ELEMENTOW] = { 1, 2, 3, 4, 5, 6, 7, 8 };
	int suma = 0;
	for(int i=0;i<ILOSC_ELEMENTOW;i++)
		suma += tablica[i];
	int srednia = suma / ILOSC_ELEMENTOW;
	std::cout << "Srednia arytmetyczna dla elementow tablicy wynosi: " << srednia << "." << std::endl;
}

// Napisz program, który wylosuje liczby z zakresu od 1 do 500,
// wstawi je do 10-elementowej tablicy, a następnie wyświetli wartości, które są jednocześnie parzyste i podzielne przez 3.
void zad2()
{
	#define ILOSC_ELEMENTOW 10
	#define ZAKRES_MIN 1
	#define ZAKRES_MAX 500

	srand(time(NULL));
	int tablica[ILOSC_ELEMENTOW];
	std::cout << "Losowe liczby z zakresu od " << ZAKRES_MIN << " - " << ZAKRES_MAX << ", ktore sa parzyste i podzielne przez 3:";
	for(int i=0;i<ILOSC_ELEMENTOW;i++)
	{
		tablica[i] = rand() % (ZAKRES_MAX - ZAKRES_MIN) + ZAKRES_MIN;
		if(tablica[i] % 2 == 0 && tablica[i] % 3 == 0)
			std::cout << " " << tablica[i];
	}
	std::cout << "." << std::endl;
}

// Napisz program, który do 20 elementowej tablicy wczyta wylosowane liczby z zakresu od 10 do 50,
// a następnie wypisze wartość najmniejszą i wartość największą.
void zad3()
{
	#define ILOSC_ELEMENTOW 20
	#define ZAKRES_MIN 10
	#define ZAKRES_MAX 50
	
	srand(time(NULL));
	int tablica[ILOSC_ELEMENTOW];
	int wartosc_najwieksza = -2147483648, wartosc_najmniejsza = 2147483647;
	for(int i=0;i<ILOSC_ELEMENTOW;i++)
	{
		tablica[i] = rand() % (ZAKRES_MAX - ZAKRES_MIN) + ZAKRES_MIN;
		if(wartosc_najwieksza < tablica[i])
			wartosc_najwieksza = tablica[i];
		if(wartosc_najmniejsza > tablica[i])
			wartosc_najmniejsza = tablica[i];
	}
	std::cout << "Najwieksza wartosc w tablicy z zakresu " << ZAKRES_MIN << " - " << ZAKRES_MAX << " to: " << wartosc_najwieksza << ", a najmniejsza to: " << wartosc_najmniejsza << "." << std::endl;
}

// Napisz program, który posortuje rosnąco elementy 10-elementowej tablicy.
// Wartości elementów zostaną wczytane z klawiatury.
void zad4()
{
	#define ILOSC_ELEMENTOW 10

	int tablica[ILOSC_ELEMENTOW];
	for(int i=0;i<ILOSC_ELEMENTOW;i++)
	{
		std::cout << "Podaj wartosc dla " << i + 1 << " liczby: ";
		std::cin >> tablica[i];
	}

	// https://www.programmingsimplified.com/c/source-code/c-program-bubble-sort
	int swap = 0;
	for(int i=0;i<ILOSC_ELEMENTOW-1;i++)
	{
		for(int x=0;x<ILOSC_ELEMENTOW-i-1;x++)
		{
			if(tablica[x] > tablica[x + 1])
			{
				swap = tablica[x];
				tablica[x] = tablica[x + 1];
				tablica[x + 1] = swap;
			}
		}
	}

	std::cout << "Posortowana tablica:";
	for(int i=0;i<ILOSC_ELEMENTOW;i++)
		std::cout << " " << tablica[i];
	std::cout << "." << std::endl;
}

// Napisz program, który wyszuka i wyświetli na ekranie maksymalny element tablicy o wymiarze 3 x 3.
void zad5()
{
	int tablica[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
	int najwiekszy_element = -2147483648;
	for(int i=0;i<3;i++)
		for(int x=0;x<3;x++)
			if(tablica[i][x] > najwiekszy_element)
				najwiekszy_element = tablica[i][x];
	std::cout << "Najwiekszy element w tablicy to: " << najwiekszy_element << "." << std::endl;
}

// Napisz program, który obliczy i wyświetli na ekranie sumę elementów na głównej przekątnej tablicy o wymiarach 3 x 3.
void zad6()
{
	int tablica[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
	int suma_elementow_przekatnej = 0;
	for(int i=0;i<3;i++)
		suma_elementow_przekatnej += tablica[i][i];
	std::cout << "Suma elementow przekatnej wynosi: " << suma_elementow_przekatnej << "." << std::endl;
}

// Napisz program obliczający sumę elementów w wierszach tablicy dwuwymiarowej o trzech wierszach i trzech kolumnach.
void zad7()
{
	int tablica[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
	int suma_elementow = 0;
	for(int i=0;i<3;i++)
		for(int x=0;x<3;x++)
			suma_elementow += tablica[i][i];
	std::cout << "Suma elementow w tablicy wynosi: " << suma_elementow << "." << std::endl;
}

int main()
{
	zad1();
	zad2();
	zad3();
	zad4();
	zad5();
	zad6();
	zad7();
	return 666;
}

Może przyda się komuś kiedyś z potomnych. To też poustawiałem define'y dla łatwiejszego zrzynania kodu.

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