Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Prośba o Wytłumaczenie kodu w C++


Rekomendowane odpowiedzi

Opublikowano

Witam chciałbym poprosić kogoś o pomoc w przetłumaczeniu kodu do programu na liczbach  (najlepiej tak w prostych i zrozumiałych słowach) jest mi to bardzo potrzebne. chodzi mi o to żeby ktoś mi wytłumaczył co dane rzeczy robią i do czego służą po kolei w niektórych przypadkach wiem o co chodzi ale poprostu mnie już to trochę przerasta :/ Zadanie brzmi:

Dana jest tablica kwadratowa nxn liczb rzeczywistych. Napisz program, który:
sprawdzi, czy tablica jest symetryczna, względem głównej przekątnej,
policzy sumę elementów w macierzy: lewy dolny trójkąt) (bez diagonali) i prawy
dolny trójkąt (z diagonalą),
po wskazaniu elementu tablicy, podaniu indeksów wiersza i kolumny, policzy
sumę elementów sąsiednich.
Przykład: n=3 Macierz:
1 2 3
2 1 4
3 4 1
Wynik: Macierz symetryczna, sumalew = 2+3+4=9, sumaprawa=3+1+4+3+4+1=16,
dla elementu [1][1] suma otoczenia= 1+2+3+2+4+3+4+1=20
dla elementu [2][1] suma otoczenia= 2+1+4+3+1=11
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
    int n = 0;
    bool symetryczna = true;
    float sumaLewa = 0, sumaPrawa = 0;
    cout<<"Podaj rozmiar macierzy: ";
    do{
        cin>>n;
    }while(n<=0);
    float macierz[n][n];
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            cout<<"Podaj macierz["<<i<<"]["<<j<<"]: ";
            cin>>macierz[i][j];
        }
    }
    cout<<"\n\t   Macierz:\n";
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            cout<<"\t"<<macierz[i][j];
        }
        cout<<endl;
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<i;j++){
            sumaLewa += macierz[i][j];
            if(symetryczna == true && i!=j && (macierz[i][j] != macierz[j][i]) ){
                symetryczna = false;
            }
        }
    }
    int minI = n-1;
    int minJ = 0;
    for(int i=n-1;i>=minI && minI>=0;i--){
        for(int j=minJ;j<n;j++){
            sumaPrawa += macierz[i][j];
        }
    minI--;
    minJ++;
    }
    cout<<"\nPodaj pierwszy index macierzy od "<<0<<" do "<<n-1<<":";
    int index1=-1;
    do{
        cin>>index1;
    }while(index1<0 || index1 >= n);
    cout<<"Podaj drugi index macierzy od "<<0<<" do "<<n-1<<": ";
    int index2=-1;
    do{
        cin>>index2;
    }while(index2<0 || index2 >= n);
    float sumaOtoczenia=0;
    int minIndex1 = 0;
    int minIndex2 = 0;
    int maxIndex1 = 0;
    int maxIndex2 = 0;
    if( (index1 != 0 && index1 != n-1) && (index2 != 0 && index2 != n-1) ){
        minIndex1 = index1-1;
        minIndex2 = index2-1;
        maxIndex1 = index1+1;
        maxIndex2 = index2+1;
    } else {
        if(index1 == 0){
            minIndex1 = index1;
            maxIndex1 = index1+1;
        } else if(index1 == n-1){
            minIndex1 = index1-1;
            maxIndex1 = index1;
        } else{
            minIndex1 = index1-1;
            maxIndex1 = index1+1;
        }
        if(index2 == 0){
            minIndex2 = index2;
            maxIndex2 = index2+1;
        } else if(index2 == n-1){
            minIndex2 = index2-1;
            maxIndex2 = index2;
        } else{
            minIndex2 = index2-1;
            maxIndex2 = index2+1;
        }
    }
    for(int i = minIndex1; i<=maxIndex1; i++){
        for(int j=minIndex2; j<=maxIndex2; j++){
            if(!(i==index1 && j==index2)) sumaOtoczenia += macierz[i][j];
        }
    }
    cout<<"\n\n\t                                                      WYNIK:\n";
    if(symetryczna) cout<<"\n                                                     Macierz jest symetryczna\n";
    else cout<<"                                                     Macierz nie jest symetryczna\n";
    cout<<"                                                     Suma lewa (bez diagonali): "<<sumaLewa<<endl;
    cout<<"                                                     Suma prawa (z diagonalia): "<<sumaPrawa<<endl;
    cout<<"                                                     Suma otoczenia: "<<sumaOtoczenia<<endl<<endl;
	system("pause");
	return 0;
}

kod działa poprawnie i robi to co trzeba proszę o jak najszybszą odpowiedz :)

{0}

1323717436-U247153.gif

  • 3 tygodnie później...

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...