• 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

VPS Starter Arubacloud
0 głosów
601 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,340 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,830 p.)
Właśnie jakoś dziwnie
0 głosów
odpowiedź 6 maja 2018 przez RafalS VIP (122,820 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 253 wizyt
pytanie zadane 5 stycznia 2018 w C i C++ przez zpawlo00 Początkujący (310 p.)
0 głosów
1 odpowiedź 1,439 wizyt
pytanie zadane 24 października 2017 w C i C++ przez dominiv2604 Początkujący (350 p.)
+1 głos
2 odpowiedzi 522 wizyt

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...