problemy z tablicą wielowymiarową

0

koledzy! mamy tablice wielowymiarową. jak teraz policzyć sumę licz ale w poszczególnych wymiarach osobno
teraz niestety liczy wszystko

double sumax = 0 ;
    for (int i=0; i<tmpx; i++)
    {
        for (int j=0; j<tmpy; j++)
        {
        sumax = sumax + tablica[i] [j];
        }
    }
    cout << sumax;

pozdrawiam f

0

Zostaw jedną pętlę, w której zwiększasz wartość 'i' i wywołuj element na przykład [i][0]

0

ale jak zrobię coś takiego

double sumax = 0 ;
    for (int i=0; i<tmpx; i++)
    {

        sumax = sumax + tablica[i] [0];

    }
    cout << sumax;

to wyświetla mi tylko pierwszy element pierwszej kolumny:(, próbowałem ten myk już wcześniej, zastawiam się raczej nad przypisaniem drugiej kolumnie wszystkich wartości 0, ale nie bardzo wiem jak to rozkminić bo zawsze zostaje pierwsza kolumna, ktorą się zająć trzeba

0

podaj kod, którym wypełniasz tablicę

0
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    int tablica[500] [500] = {0,0};

    int tmpx = 0;
    int tmpy = 0;

    ifstream liczby("source.txt");

    if (!liczby)
    {
        cout << "Nie mozna otworzyc pliku";
        getchar();
        return 1;
    }

    while (!liczby.eof())
       liczby >> tablica[tmpx++] [tmpy++];

    liczby.close();


    double sumax = 0 ;
    for (int i=0; i<tmpx; i++)
    {

        sumax = sumax + tablica[i] [0];

    }
    cout << sumax;
    getchar();
    return 0;
}

source.txt:
2 4
1 5
3 6

0

no więc dobrze wypisuje. bo tablice wypełniasz jedynie po skosie. tzn.
2|0|0|0|0|0
0|4|0|0|0|0
0|0|1|0|0|0
0|0|0|5|0|0
0|0|0|0|3|0
0|0|0|0|0|6

0

to jak wpisać żeby w jednym wymiarze była jedna kolumna z pliku a w drugim druga?
bo potem bym to sobie sumował i było by git!

0

W pliku nie ma czegoś takiego jak kolumna, więc musisz znać długość tekstu pomiędzy dwoma znakami końca linii (albo jakoś sprawdzić czy taki występuje). Wtedy wartość, która odpowiada w twoim kodzie za aktualnie wypełnianą kolumnę w tablicy zwiększasz właśnie po tej liczbie wczytań znaku, natomiast zmienną oznaczającą aktualnie wypełniany wiersz tablicy zerujesz. Po każdym wczytanym znaku musisz również zwiększać wartość aktualnego wiersza

0

dzięki wielkie, wrócę do sprawy wieczorem i jak dalej będą problemy to zapytam znowu
dzięki
czesc

0

chyba, że znacie inny sposób na zliczenie liczb z kolumny jeżeli w pliku są dwie albo trzy kolumny???
mój pomysł jak widzieliście to załadować dane do tablicy a potem już pętlą

for 

zliczyć.
Zły pomysł??
Pozdrawiam

0

Jeżeli w pliku 3 kolumny to nie potrzebujesz tablicy tylko 6 zmiennych, jeżeli 4 kolumny to 8 zmiennych.

0

a jak są tylko dwie kolumny to potrzebuję tylko czterech zmiennych??
mogę prosić o jakiś pseudo kod bo nie bardzo rozumiem jak można by to zrobić?
pozdrawiam

0

suma1=0;
suma2=0;
otworz plik
dopoki udaje się wczytać dwie zmienne liczba1 i liczba2 rób suma1=suma1+liczba1; suma2=suma2+liczba2;
zamknij plik
wyswietl suma1 i suma2

0

kompiluje ale niestety nic nie wyświetla

#include <iostream>
#include <fstream>
using namespace std;

int main()
{

    double suma1=0;
    double suma2=0;

    ifstream liczby("source.txt");

    double liczba1;
    double liczba2;
    while (!liczby.eof())

    liczby >> liczba1, liczba2;

    suma1=suma1 + liczba1;
    suma2=suma2 + liczba2;

    liczby.close();
    cout << suma1 << endl;
    cout << suma2 << endl;

    return 0;
}

co powiecie?

0

Zamiast:
dopoki udaje się wczytać dwie zmienne liczba1 i liczba2 rób suma1=suma1+liczba1; suma2=suma2+liczba2;
Zrealizowałeś:
dopoki udaje się wczytać dwie zmienne liczba1 i liczba2 wczytuj je i wywalaj
po zakończeniu odczytu dla ostatnio wczytanych liczba1 i liczba2 rób suma1=suma1+liczba1; suma2=suma2+liczba2;

#include <iostream>
#include <fstream>
using namespace std;
 
int main()
  {
   ifstream liczby("source.txt");
   double s1=0,s2=0;
   for(double v1=0,v2=0;liczby>>v1>>v2;s1+=v1,s2+=v2) {}
   liczby.close();
   cout<<s1<<endl<<s2<<endl;
   cin.get();
   return 0;
  }

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