• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zapisywanie danych z tablicy do tablicy

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
427 wizyt
pytanie zadane 6 maja 2018 w C i C++ przez Undisputed Gaduła (3,040 p.)

Witajcie.
W pętli for w linijce 54 chcę przypisać zmienne z tablicy wyniki do tablicy ojej. Jednakże dane w tablicy ojej się nadpisują co jest w pełni zrozumiałe.
Chodzi mi o to że jak mam dane w tablicy wyniki[0]=5; wyniki[1]=10; wyniki[2]=15, potem znowu inne dane w tej tablicy wyniki[0]=8; wyniki[1]=16; wyniki[2]=23. To chciałbym mieć w tablicy ojej dane tak:
ojej[0]=5;
ojej[1]=10;
ojej[2]=15;
ojej[3]=8;
ojej[4]=15;
ojej[5]=23.
Tutaj kod:

void simplex(double *tab, double *wyniki, int NV, int m1, int m2) {

    N = NV;
    M1 = m1;
    M2 = m2;
    M3 = 0;
    M = M1 + M2 + M3;  // Pelna liczba ograniczeń

    for (i = 1; i <= M + 2; i++)
        for (j = 1; j <= N + 1; j++)
            A[i][j] = 0.0;

    //wejsciowa funkcja
    for (i = 2; i <= N + 1; i++)
    {
        //printf(" Wspolczynnik #%d: ", i-1);
        //scanf("%lf", &A[1][i]);
        A[1][i] = tab[i - 2];
    }
    //printf(" Staly term : ");
    A[1][1] = 0;

    // wejsciowe wspolczynniki
    for (i = 1; i <= M; i++)
    {
        //printf(" wej stale #%d: \n", i);
        for (j = 2; j <= N + 1; j++)
        {
            //printf(" Wspolczynnik #%d: ", j-1);
            R = tab[i*(NV + 1) + j - 2];
            A[i + 1][j] = -R;
        }
        A[i + 1][1] = tab[i*(NV + 1) + NV];

    }

    simplx(A, M, N, M1, M2, M3, &ICASE, IZROV, IPOSV);

    if (ICASE == 0)
    {
        //wynik ok
        //wyrzuc nasze maximum a[1][1]
        wyniki[0] = A[1][1];
        for (i = 1; i <= N; i++)
        {
            for (j = 1; j <= M; j++)
                if (IPOSV[j] == i)
                {
                    wyniki[i] = A[j + 1][1];
                    goto e3;
                }
e3:;
        }
        for(int i=0; i<10;i++)
        {
            cout << wyniki[i]<< endl;
            //ojej[i]=wyniki[i];
        }
    }
    else
    {
        //Blad, brak rozwiazania
        wyniki[0] = -1;
    }

}

Proszę jakieś wskazówki, rady, przykłady.

​​​​​​​
​​​​​​​

1
komentarz 6 maja 2018 przez CzikaCarry Szeryf (75,480 p.)
Fajne nazwy zmiennych :)
komentarz 6 maja 2018 przez Arkadiusz Sikorski Pasjonat (20,160 p.)
Dobra zasada dla programisty nieprogramującego w asemblerze - nie używaj goto.

2 odpowiedzi

0 głosów
odpowiedź 6 maja 2018 przez dunaj Użytkownik (950 p.)
to jest C czy C++?
komentarz 6 maja 2018 przez Hiskiel Pasjonat (22,850 p.)
Właśnie jakoś dziwnie
0 głosów
odpowiedź 6 maja 2018 przez RafalS VIP (122,860 p.)
edycja 6 maja 2018 przez RafalS

Nie wiem po co tyle kodu wrzuciłeś. Nikomu nie chce się czytać jakiegoś zagmatwanego kodu z wywołaniem rekurencyjnym, nazwami zmiennych w stylu a, b, c i z tego co widzę, to część zmiennych jest globalna, bo używasz ich a nie są zdeklarowane w funkcji i też nie wiadomo skąd i po co się one tutaj wzięły.

Co do samego pytania bez kodu to jeśli piszesz w C++ to może szukasz kontenera vector z biblioteki standardowej. Rozumiem, że w tablicy ojej (super nazwa, na prawde) ma się znaleźć poniekąd historia tablic wyniki i gdy jest kilka serii wyników to w ojej mają się znaleźć wszystkie po kolei. Jeśli dobrze to zrozumiałem to wystarczy Ci coś takiego:
 

std::vector<int> ojej;

i potem zamiast przypisywać do konkretnego indeksu, co nadpisuje wartość, dodawać do końca tablicy:
 

ojej.push_back(wyniki[i]);

Jeśli jednak piszesz w C to możesz sobie zrobić jakąś wystarczająco dużą tablice i odzielny licznik, który będzie mówił na którym miejscu w tej tablicy jesteś i wtedy będziesz robił coś takiego:
 

ojej[licznikWpisanychLiczb++] = wyniki[i];


EDIT: Przepraszam, tam nie ma wywołania rekurencyjnego jest wywołanie funkcji simplx w funkcji simplex :D Nie pozdrawiam

Podobne pytania

0 głosów
0 odpowiedzi 135 wizyt
pytanie zadane 5 stycznia 2018 w C i C++ przez zpawlo00 Początkujący (310 p.)
0 głosów
1 odpowiedź 1,020 wizyt
pytanie zadane 24 października 2017 w C i C++ przez dominiv2604 Początkujący (350 p.)
+1 głos
2 odpowiedzi 300 wizyt

89,768 zapytań

138,374 odpowiedzi

309,455 komentarzy

59,678 pasjonatów

Advent of Code 2022

Top 15 użytkowników

  1. 1074p. - Argeento
  2. 1010p. - rucin93
  3. 1006p. - Michal Drewniak
  4. 1000p. - Łukasz Eckert
  5. 974p. - TheLukaszNs
  6. 949p. - JMazurkiewicz
  7. 946p. - adrian17
  8. 933p. - Jarosław Roszyk
  9. 889p. - nidomika
  10. 860p. - Mikbac
  11. 847p. - ssynowiec
  12. 799p. - Hubert Chęciński
  13. 772p. - Mawrok
  14. 768p. - overcq
  15. 764p. - Vinox
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...