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

Użytkownik
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




Moderator Mamut
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

Użytkownik
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

Użytkownik


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

Użytkownik



Zubr, bydle na etacie.




" 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

Użytkownik
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

Użytkownik


blinki zmień dziewczynę :P
Offline

Użytkownik

Użytkownik


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



Oldtimer




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



Zubr, bydle na etacie.




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

Użytkownik


gindek tak myślałem, dzięki za potwierdzenie moich domniemań.
Ostatnio edytowany przez kondzio14 (2009-11-10 12:18:26)
Offline
Strony: 1