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


 Zubr, bydle na etacie.
 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
 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
 Użytkownik
	

blinki zmień dziewczynę :P
Offline

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