[C] Sumowanie liczb w tablicy jednowymiarowej

jabluszko
Użytkownik
Użytkownik
Posty: 39
Rejestracja: 3 sty 2015, o 18:55
Płeć: Mężczyzna
Lokalizacja: WW
Podziękował: 15 razy

[C] Sumowanie liczb w tablicy jednowymiarowej

Post autor: jabluszko »

sam tego nie pisalem. rozumiem tylko najprostsze funkcje z tego wzgledu nawet nie do konca wiem o co pytasz..-- 6 sty 2015, o 19:49 --nie rozumiem 12,13,14 linijek tzn nie wiem dokladnie co sie w nich dzieje. a w 11 nie wiem co robi napis value
Gouranga
Użytkownik
Użytkownik
Posty: 1592
Rejestracja: 16 maja 2013, o 17:56
Płeć: Mężczyzna
Lokalizacja: Trójmiasto
Podziękował: 11 razy
Pomógł: 246 razy

[C] Sumowanie liczb w tablicy jednowymiarowej

Post autor: Gouranga »

a mój kod kompilowałeś? ten z tablicami ps i ss? bo wiesz, co niego masz pełne wyjaśnienie
jabluszko
Użytkownik
Użytkownik
Posty: 39
Rejestracja: 3 sty 2015, o 18:55
Płeć: Mężczyzna
Lokalizacja: WW
Podziękował: 15 razy

[C] Sumowanie liczb w tablicy jednowymiarowej

Post autor: jabluszko »

widze pierwszy usmiech odkad zaczalem szwendac sie po forach w poszukiwaniu pomocy. Twoj byl dla mnie w sumie najbardziej zrozumialy. nie moglem sb jednak do konca poradzic ze wczytywaniem danych posrednio chyba przez to ze dev nie kompilowal mi absolutnie niczego a ja z racji zerowego doswiadczenia, myslalem ze wina lezy po mojej stronie i nie mialem juz smialosci prosic o dalsze wskazowki i narazac sie na wyrzucenie z forum(bo i z tym sie spotkalem), skoro to gotowiec ;d
za chwile sie nim zajme. przyznam ze kompletnie o tym zapomnialem.
Awatar użytkownika
jarzabek89
Użytkownik
Użytkownik
Posty: 1337
Rejestracja: 11 lis 2007, o 21:36
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 4 razy
Pomógł: 181 razy

[C] Sumowanie liczb w tablicy jednowymiarowej

Post autor: jarzabek89 »

Dopiero się uczysz, najłatwiej się uczyć na własnych błędach, na samodzielnemu szukaniu błędu i go rozwiązaniu.

W pierwszym kroku proponuję Ci napisać funkcję, która będzie tworzyła tablicę n-wymiarową, wpisywała do niej liczby i na koncu ją wyświetliła. Będziesz miał to, możesz zabierać się dalej.
jabluszko
Użytkownik
Użytkownik
Posty: 39
Rejestracja: 3 sty 2015, o 18:55
Płeć: Mężczyzna
Lokalizacja: WW
Podziękował: 15 razy

[C] Sumowanie liczb w tablicy jednowymiarowej

Post autor: jabluszko »

jak to zrobic zeby teraz wczytac mu liczby do tablicy?

Kod: Zaznacz cały

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
	unsigned n;
   printf ("podaj wielkosc tablicy :");
   scanf ("%u",&n); // podaj n
   int *arr=(int*)malloc(n*sizeof(int));
   printf ("podaj liczby do tablicy:
");
   scanf ("%d",&arr[n]);
	return 0;
}
Awatar użytkownika
jarzabek89
Użytkownik
Użytkownik
Posty: 1337
Rejestracja: 11 lis 2007, o 21:36
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 4 razy
Pomógł: 181 razy

[C] Sumowanie liczb w tablicy jednowymiarowej

Post autor: jarzabek89 »

Kod: Zaznacz cały

 unsigned n;
unsigned, ale co unsigned?

Wpisujesz do tablicy w pętli for.
jabluszko
Użytkownik
Użytkownik
Posty: 39
Rejestracja: 3 sty 2015, o 18:55
Płeć: Mężczyzna
Lokalizacja: WW
Podziękował: 15 razy

[C] Sumowanie liczb w tablicy jednowymiarowej

Post autor: jabluszko »

kod Gouranga ze wczytywaniem danych. chyba juz wszystko dziala, ale zastanawiam sie czemu nie wyswietla tej liczby ani jej indexu dla, ktorej suma jej lewej strony jest rowna sumie prawej (jezeli wiesz o co mi chodzi)?

Kod: Zaznacz cały

#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char* argv[])
{
    int n;
    printf("podaj wielkosc tablicy :");
    scanf("%d", &n); // podaj n
    int arr[n];
    printf("podaj liczby do tablicy");
    // wypełnij tablicę arr liczbami
    int ps[n], ss[n]; // ps - prefix-sum, ss - sufix-sum
    int i;
    ps[0] = 0;
    ss[n - 1] = 0;
    for (i = 0; i < n; ++i)
        scanf("%d", &arr[i]);
    for (i = 1; i < n; i++) {
        ps[i] = ps[i - 1] + arr[i - 1];
        ss[n - 1 - i] = ss[n - i] + arr[n - i];
    }
    int index = -1;
    for (i = 0; i < n; i++) {
        if (ps[i] == ss[i])
            index = i;
    }
    if (index == -1) // nie ma takiej liczby
    {
        printf("nie ma takiej liczby");
    } else {
        printf("%d
", arr[index]);
    } // wypisz arr[index]
 
    return 0;
}
lastsigma
Użytkownik
Użytkownik
Posty: 16
Rejestracja: 6 lis 2011, o 23:25
Płeć: Mężczyzna
Lokalizacja: Kraków
Pomógł: 4 razy

[C] Sumowanie liczb w tablicy jednowymiarowej

Post autor: lastsigma »

W Twoim przypadku tablica (ściślej jest to wskaźnik, a nie tablica (a to różnica: ... alent-in-c)) nazywa się arr i ma
rozmiar n. Do pierwszego elementu możesz się odwołać poprzez arr[0], do drugiego poprzez arr[1], a do ostatniego poprzez arr[n-1] (zauważ, że arr[n] jest już poza "tablicą").
Co chciałbyś osiągnąć to:

Kod: Zaznacz cały

scanf ("%d",&arr[0]);
scanf ("%d",&arr[1]);
scanf ("%d",&arr[2]);
...
scanf ("%d",&arr[n-1]);
Czyli sukcesywne wczytywanie liczb do kolejnych elementów "tablicy".
Dokładnie możesz to zrealizować za pomocą pętli for:

Kod: Zaznacz cały

for (i = 0; i < n; ++i) scanf("%d", &arr[i]);
Jeśli nie wiesz jak działają pętlę, instrukcje warunkowe i inne tego typu podstawy, to możesz czytać o nich, ale myślę, że jeżeli jesteś zupełnym beginnerem to najłatwiej będzie Ci zrozumieć pewne koncepcje z tutoriali podobnych do tego:

Kod: Zaznacz cały

https://www.youtube.com/watch?v=LZdJo-areyY
Awatar użytkownika
Vardamir
Użytkownik
Użytkownik
Posty: 1913
Rejestracja: 3 wrz 2010, o 22:52
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 6 razy
Pomógł: 410 razy

[C] Sumowanie liczb w tablicy jednowymiarowej

Post autor: Vardamir »

Gouranga pisze:Vardamir, używanie int main() jest niezalecane, jak już to int main(void) jest dobre
To jest dyskusyjna sprawa, według standardu nie powinno tam być niczego w argumentach. Jeśli chcesz wyślę Ci na PW link z dobrym wyjaśnieniem.
jabluszko pisze:wykladowca kaze pracowac na tym ide. na poczatku wole sie trzymac jego wytycznych. zainstalowalem wersje orwellowska deva i wszystko smiga.
To przynajmniej jest jakieś sensowne wyjście.
jarzabek89 pisze:

Kod: Zaznacz cały

for(i=0;i<n;sum+=arr[i++]) scanf ("%d",&arr[i]);
Czym się kierowałeś pisząc to?
Przecież to jest całkowicie poprawne. Co jest w tym niezrozumiałego?
Gouranga
Użytkownik
Użytkownik
Posty: 1592
Rejestracja: 16 maja 2013, o 17:56
Płeć: Mężczyzna
Lokalizacja: Trójmiasto
Podziękował: 11 razy
Pomógł: 246 razy

[C] Sumowanie liczb w tablicy jednowymiarowej

Post autor: Gouranga »

Vardamir, ok to podeślij ten link, bo jestem ciekaw, mnie uczono, że jak ma być bez argumentów to wpisywać tam void
jabluszko
Użytkownik
Użytkownik
Posty: 39
Rejestracja: 3 sty 2015, o 18:55
Płeć: Mężczyzna
Lokalizacja: WW
Podziękował: 15 razy

[C] Sumowanie liczb w tablicy jednowymiarowej

Post autor: jabluszko »

wiec co z tym kodem? ktos cos podpowie?
Awatar użytkownika
Vardamir
Użytkownik
Użytkownik
Posty: 1913
Rejestracja: 3 wrz 2010, o 22:52
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 6 razy
Pomógł: 410 razy

[C] Sumowanie liczb w tablicy jednowymiarowej

Post autor: Vardamir »

jabluszko pisze:wiec co z tym kodem? ktos cos podpowie?
Ale jakiej podpowiedzi oczekujesz? Nie przeglądałem co się tam dzieje w kodzie, ale dla podanych przez Ciebie danych 5 1 2 3 3 0 zwracana jest poprawna odpowiedź.
jabluszko
Użytkownik
Użytkownik
Posty: 39
Rejestracja: 3 sty 2015, o 18:55
Płeć: Mężczyzna
Lokalizacja: WW
Podziękował: 15 razy

[C] Sumowanie liczb w tablicy jednowymiarowej

Post autor: jabluszko »

nie wypisuje indexu tablicy dla, ktorej warunek jest spelniony
Awatar użytkownika
Vardamir
Użytkownik
Użytkownik
Posty: 1913
Rejestracja: 3 wrz 2010, o 22:52
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 6 razy
Pomógł: 410 razy

[C] Sumowanie liczb w tablicy jednowymiarowej

Post autor: Vardamir »

To może.. jakby to powiedzieć.. spróbuj sam poprawić gotowca, którego dostałeś? To jest kosmetyczna zmiana i nie wymaga dużo pracy.
Gouranga
Użytkownik
Użytkownik
Posty: 1592
Rejestracja: 16 maja 2013, o 17:56
Płeć: Mężczyzna
Lokalizacja: Trójmiasto
Podziękował: 11 razy
Pomógł: 246 razy

[C] Sumowanie liczb w tablicy jednowymiarowej

Post autor: Gouranga »

jeśli chodzi ci o to, że okno programu znika zanim zdążysz cokolwiek zobaczyć to jest ok, w kodzie nie ma nic co by przytrzymało okno otwarte
ODPOWIEDZ