GRY-Online.pl --> Archiwum Forum

pomoc z C

11.02.2009
15:59
smile
[1]

pablo397 [ sport addicted ]

pomoc z C

witam, prosilbym o poprawki i sugestie do tego oto biednego programu




jak sie mozna domyslac - ma on za zadanie zliczanie ile z podanych liczb bylo parzystych a ile nie.

jako, ze z programowaniem w C nie jestem na dzien-dobry, to program wyszedl jaki wyszedl. co tu mozna poprawic? na oko wydaje mi sie, ze za duzo zmiennych, ale stwierdzilem, ze to bezpieczniejsze zastosowanie, chocby dla znacznikow poszczegolnych tablic, zeby czasem cos tam sie nie zakrecilo

no i przede wszystkim wyswietlanie zawartosci tablic - nie wiem czy istnieje jakas prostsza skladnia, ale ja sie takiej nie potrafilem doszukac :/ i jedyne na co wpadlem to petle for, co widac w koncowej czesci programu - wydaje mi sie to bardzo lopatlogiczne i czasochlonne, nie ma jakiegos prostszego rozwiazania, zeby wyswietlic ladnie w rzedzie zawartosc tablicy w okreslonym zakresie znacznikow (od 0 do zmiennej X np)?

z gory dzieki za jakiekolwiek sugestie.

edit: co do stalej ROZMIAR - czyli ilosci liczb do sprawdzenia - wg polecenia ma to byc 10 liczb, ale wprowadzilem ta stala celem latwej modyfikacji programu, np. podczas testowania opieralem sie na 2 liczbach, zeby szybciej bylo. mozna zmodyfikowac latwo program, zeby na wstepie pytal uzytkownika o ilosc liczb do sprawdzenia, ale ze nie bylo takiego polecenia to po co sie wychylac z szeregu :P

11.02.2009
16:05
smile
[2]

Arxel [ Legend ]

hm...
Tutaj masz coś łatwiejszego:



Wystarczy trochę przerobić na sprawdzanie liczb podanych przez użytkownika.

11.02.2009
16:15
[3]

pablo397 [ sport addicted ]

Arxel --> czy ja wiem czy takie latwiejsze? i tak musialbym uzyc dwoch tablic, zeby gdzies przetrzymac te parzyste i nieparzyste, na moje oko wyszlo by to samo :P

11.02.2009
16:19
[4]

Arxel [ Legend ]

Po co tablice...
Robisz pętlę do...while - żeby dla jakiegoś argumentu zakończyć diałanie programu, następnie wprowadzasz liczbę, sprawdzasz czy jest parzysta czy nie, jesli jest to będzie iloscParzyste++, jeśli nie, to będzie iloscNieparzyste++. Pętla sobie będzie krążyła caly czas dodając 1 do wartości iloscParzyste bądź iloscNieparzyste, a jak zakończysz działanie pętli to po prostu zwrócisz wartości: iloscParzyste oraz iloscNieparzyste

Po co tutaj tablice :-)

Lub, jeśli podajesz na początku ilość liczb, które będziesz sprawdzał, to zwykła pętla while(iloscPodawanychLiczb) i jak dojdzie do 0 to przestanie sprawdzać.. :-)

11.02.2009
16:24
[5]

pablo397 [ sport addicted ]

Arxel --> moja wina, niescislosc w pierwszym poscie jest - program ma za zadanie nie tylko zliczyc ile jakich liczb bylo (i wyswietlic komunikat gdyby w ktorejs grupie nie bylo elementow) ale tez i wydrukowac na ekranie w dwoch rzedach poszczegolne elementy obydwoch grup.

gdyby faktycznie mial tylko je zliczyc to bym pewnie zrobil jak radzisz ;)

11.02.2009
16:26
smile
[6]

Arxel [ Legend ]

Trzymaj:



edit: A widzisz.. No to faktycznie trzeba użyć tablic :-)
Zaraz dopiszę :-)
edit: sorry, ale nie chce mi się juz z tym bawić :P Za dużo kombinowania :P
Sam muszę wracać do nauki :-)

Wystarczy trochę mój kod rzerobić i będziesz miał :P

11.02.2009
16:40
smile
[7]

pablo397 [ sport addicted ]

Arxel --> a widzisz, jest troche roboty wbrew pozorom :P zastanawiam sie nad Twoim rozwiazaniem - czyli "wpisanie jednej liczby, sprawdzewnie jej parzystosci i wyslanie do odpowiedniej tablicy", ale szczerze mowiac to nie chce mi sie juz od nowa bawic :P ale pomysl intrygujacy...

11.02.2009
17:39
[8]

pablo397 [ sport addicted ]

dostalem taka odpowiedz od profesora:

"Zadeklarowanie wielkości za pomocą stałej symbolicznej, jest dobrym pomysłem, jeśli nie wykorzystuje się dynamicznego przydziału pamięci. Co do ilości zmiennych, to nie trzeba stosować aż trzech tablic, powiedziałem o tym że można ale nie mówiłem że trzeba. Program można skonstruować w oparciu o jedną tablicę wykonując dwukrotnie pętle (ponieważ jeszcze nie znamy działania na funkcjach) pobrać po kolei liczby parzyste, następnie nieparzyste, a do obliczenia ilości tych ostatnich można wykonać działanie odejmowania stałej symbolicznej - uprzednio policzona ilość danych."

jak to mozna zrobic za pomoca jednej tablicy - policzyc, okej, zaden problem. ale gdzie trzymac informacje, ktore to parzyste/nieparzyste liczby sa?

11.02.2009
17:49
[9]

mac2000 [ Konsul ]

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

int r;
int nparzyste=0;
int parzyste=0;
int liczba;

main()‹
printf("podaj ile liczb chcesz sprawdzic: ");
scanf("%d",&r);
int tab[r];
//dodawanie
for(int i=0;i<r;i++)‹
//jesli chcesz losowac liczby wywal 2 nast linijki i skasuj // w 3 linijce
printf("podaj liczbe: "); //wywal
scanf("%d",&liczba); //wywal
//liczba=rand()%r; //skasuj //
if(liczba%2==1)‹
nparzyste++;
tab[nparzyste-1]=liczba;›
else‹
parzyste++;
tab[r-parzyste]=liczba;››
//wypisywanie od poczatku (nieparzyste)
if(nparzyste!=0)
printf("nieparzyste\n");
for(int i=0;i<nparzyste;i++)‹
printf("%d ",tab);›
//wypisywanie od konca (parzyste)
if(parzyste!=0)
printf("\nparzyste\n");
for(int i=r-1;i>=r-parzyste;i--)‹
printf("%d ",tab);›
//wyniki
printf("\nparzystych %d",parzyste);
printf("\nnieparzystych %d\n",nparzyste);
system("pause");›

11.02.2009
18:01
[10]

mac2000 [ Konsul ]

coś klamerki nie wyszły

11.02.2009
18:14
[11]

pablo397 [ sport addicted ]

mac2000 --> sprytne! wpisywanie do jednej tabeli danych, ale z dwoch stron. nie wpadl bym na to :P

© 2000-2024 GRY-OnLine S.A.