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
Arxel [ Legend ]
hm...
Tutaj masz coś łatwiejszego:
Wystarczy trochę przerobić na sprawdzanie liczb podanych przez użytkownika.
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
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ć.. :-)
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 ;)
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
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...
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?
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");
mac2000 [ Konsul ]
coś klamerki nie wyszły
pablo397 [ sport addicted ]
mac2000 --> sprytne! wpisywanie do jednej tabeli danych, ale z dwoch stron. nie wpadl bym na to :P