Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
a wiec nasz nieszczesny program musi mnozyc 2 liczby np.
c=a*b;
a nastempnie dodaje poszczegulne CYFRY z wyniku(c)
czyli:
a=10;
b=11;
wtedy
c=110
a suma cyfr=2
moja koncepcja ale oczywiscie zla (juz tak kombinuje ze zapominam co jest dobrze a co zle, probowalem na tablicach ale tez cos niedzialalo)
niby teraz dziala jak zrobilem unsigned int, ale najgorsze jest to ze niewiem czy na jakiejs liczbie niepopelni bledu
sprawdzcie i pokazcie wlasna koncepcje(bo moja to jest bardzo prymitywna:P)
#include <iostream> #include <cstdlib> using namespace std; int main() { unsigned int a,b,c,d,i,j,e,f,g; cin>>d; for (i=1;i<=d;i++) { f=0; cin>>a>>b; c=a*b; g=10000000; f=c%10; cout<<c<<" "; for(j=0;j<=6;j++) { e=c/g; c=c-(g*e); f=f+e; g=g/10; } cout<<f<<endl; } system("pause"); }
Ostatnio edytowany przez azhag (2009-11-10 12:00:51)
Offline
idea jest taka (zakladam ze wynik mnozenia masz w jakiejs zmiennej A):
0. jezeli A rozne od zera to
1. do sumy dodajemy reszte z dzielenia A przez 10
2. pod A podstawiamy wynik dzielenia calkowitego A przez 10
3. wracamy do punktu 0.
Offline
no robilem tak i wlasnie automat na polibudzie gdanskiej wie lepiej ^^ ale sprobuje jeszcze raz
edit.
dziala bledem bylo uzycie pentli for :P
#include <iostream> #include <cstdlib> using namespace std; int main() { unsigned int a,b,c,d,i,j,e,f,g; cin>>d; for (i=1;i<=d;i++) { cin>>a>>b; c=a*b; cout<<c<<" "; f=0; while(c!=0) { f=f+c%10; c=c/10; } cout<<f<<endl; } system("pause"); }
dzieki
Ostatnio edytowany przez blinki (2009-11-09 22:20:15)
Offline
Samowolka? Możesz zamieniać int na str i odwrotnie, wynik mnożenia zamieniasz na stringa, a później:
#include <iostream> #include <sstream> using namespace std; int main() { string c="34431"; int z; z = c.length(); string * tabSTR = new string[z]; for(int i=0; i<z; i++) tabSTR[i]=c[i]; int k,wynik_d=0; for(int i=0; i<z; i++) { istringstream iss(tabSTR[i]); iss >> k; wynik_d +=k; } cout << wynik_d; }
Offline
" system("pause");" tego raczej nie skompilujesz pod linuksem. polecenie "pause" jest z windy.
Algorytm Bercika jest chyba najlepszy ( tez o tym pomyslalem). Co ten automat wiedzial lepiej? No i kod kod wrzuc.
Offline
gneralnie pisze pod linuxem ale pisze pod winde(przerabiam, czyli dodaje system pause) bo to dla dziewczyny ^^ poszla na informatyke do gdanska ^^ ale jak chce jej powiedziec ze linux jest PRO czy znia podyskutowac o informatyce to zmienia temat ^^
edit: no i zostal mi DUG ^^ z wami moge o informatyce pogadac ^^
Ostatnio edytowany przez blinki (2009-11-09 22:36:57)
Offline
blinki zmień dziewczynę :P
Offline
blinki napisał(-a):
nie zmienie ^^ bo kocham bestie ^^
Daj ci Boże...
Podsumowując:
#include <iostream> #include <sstream> using namespace std; int main() { int a,b,z,k,wynik_d=0; cout << "Podaj liczbe 'a' i 'b': "; cin >>a>>b; int iloczyn = a*b; ostringstream ss; ss << iloczyn; string str = ss.str(); z = str.length(); string * tabSTR = new string[z]; for(int i=0; i<z; i++) tabSTR[i]=str[i]; for(int i=0; i<z; i++) { istringstream iss(tabSTR[i]); iss >> k; wynik_d +=k; } cout << "Wynik mnozenia podanych liczb to " << iloczyn << ", a suma CYFR wyniku to " << wynik_d; delete []tabSTR; }
Zwolnienie pamięci jest w powyższym przykładzie odpowiednie (pełne)?
Offline
Mam pytanie, podobnie jak bercik myślę, nie da się tego zrobić tak
int main() { int a,b,c,sum; sum=0; cin>>a>>b; c=a*b; while(c>0){ sum=sum+c%10; c=c/10; } cout<<sum<<endl; }
EDIT: sorry nie doczytałem dobrze, podobny już kod jest wyżej u autora problemu ;)
Ostatnio edytowany przez paoolo (2009-11-10 02:14:12)
Offline
Zwolnienie pamięci jest w powyższym przykładzie odpowiednie (pełne)?
w tym przypadku tak.
gdyby to byla tablica dwuwymiarowa to trzeba by petle zrobic usuwajaca jeden wymiar, no a potem normalnie wskaznik wywalic.
Ale pewnie znalazl by sie kompilator ktory usuwal by automatycznie tablice dwuwyiarowa, lub kompilator ktory kazal zwalniac pamiec "po kazdej komórce"
Ostatnio edytowany przez gindek (2009-11-10 11:40:48)
Offline
gindek tak myślałem, dzięki za potwierdzenie moich domniemań.
Ostatnio edytowany przez kondzio14 (2009-11-10 12:18:26)
Offline
Strony: 1