modulo - sumowanie liczb

anika91
Użytkownik
Użytkownik
Posty: 172
Rejestracja: 11 paź 2009, o 19:54
Płeć: Kobieta
Lokalizacja: Gdańsk
Podziękował: 67 razy

modulo - sumowanie liczb

Post autor: anika91 »

Witam ! Mam za zadanko napisać program który ma działać tak:

Kod: Zaznacz cały

Podaj dzien Twoich urodzin: 19
  Podaj miesiac Twoich urodzin: 8
  Podaj rok Twoich urodzin: 1983

  19.08.1983

  1+9+0+8+1+9+8+3 = 39 
  3+9 = 12 
  1+2 = 3
No i tutaj mam problem, jak to zrobić żeby sumowało kolejno te liczby ? Podpowiedź do zadania mam taką że mam użyć MODULO i NIE UZYWAC PĘTLI.

Za jakąś pomoc, sugestie z góry dziękuje , ja się dalej głowie
Crizz
Użytkownik
Użytkownik
Posty: 4094
Rejestracja: 10 lut 2008, o 15:31
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 12 razy
Pomógł: 805 razy

modulo - sumowanie liczb

Post autor: Crizz »

Korzystasz po prostu z reszty z dzielenia, np.:

\(\displaystyle{ a=1983}\)
\(\displaystyle{ b=a \% 1000}\) \b=983
\(\displaystyle{ c=a \% 100}\) \c=83
\(\displaystyle{ d=a \% 10}\) \d=3
Pierwsza cyfra to \(\displaystyle{ (a-b)/1000}\)
Druga cyfra to \(\displaystyle{ (b-c)/100}\)
Trzecia cyfra to \(\displaystyle{ (c-d)/10}\)
Czwarta cyfra to \(\displaystyle{ d}\)

Podobnie pozostałe z podanych liczb.
exother
Użytkownik
Użytkownik
Posty: 97
Rejestracja: 28 wrz 2009, o 15:01
Płeć: Mężczyzna
Podziękował: 3 razy
Pomógł: 9 razy

modulo - sumowanie liczb

Post autor: exother »

Coś takiego na szybko D:

Kod: Zaznacz cały

#include <iostream>
#include <stdio.h>
#include <math.h>

using namespace std;


int main()
{
    int dzien,miesiac,rok,wyn,wyn1,wyni;
    cout << "Dzień: "; cin>>dzien;
    cout << "Miesiąc: "; cin>>miesiac;
    cout << "Rok: "; cin>>rok;
    wyn=0;
    wyn=wyn+dzien%10;
    if(dzien-dzien%10 > 9){
      wyn=wyn+(dzien-dzien%10)/10;}
    wyn=wyn+miesiac%10;
    if(miesiac-miesiac%10 > 9){
      wyn=wyn+(miesiac-miesiac%10)/10;}
    wyn=wyn+rok%10+(rok%100-rok%10)/10+(rok%1000-rok%100)/100+(rok%10000-rok%1000)/1000;
    wyn1=wyn%10;
    if(wyn-wyn%10 > 9){
      wyni=(wyn-wyn%10)/10;}
    cout << "Wynik: " << wyn1+wyni;
    getchar(); getchar();
    return 0;
}
Chyba o to chodzi...
anika91
Użytkownik
Użytkownik
Posty: 172
Rejestracja: 11 paź 2009, o 19:54
Płeć: Kobieta
Lokalizacja: Gdańsk
Podziękował: 67 razy

modulo - sumowanie liczb

Post autor: anika91 »

o kurczę trochę to pokręcone, dziękuje za ten kod programu ale ja mam to w Javie . Będę główkować nad przerobieniem tego.


PS. Nie rozumiem za bardzo warunku IF , czemu piszeszmy : if (dzien-dzien%10 >9) , a nie po prostu : if (dzien>9).... Czy to nie wyjdzie na to samo ?
exother
Użytkownik
Użytkownik
Posty: 97
Rejestracja: 28 wrz 2009, o 15:01
Płeć: Mężczyzna
Podziękował: 3 razy
Pomógł: 9 razy

modulo - sumowanie liczb

Post autor: exother »

anika91 pisze:o kurczę trochę to pokręcone, dziękuje za ten kod programu ale ja mam to w Javie . Będę główkować nad przerobieniem tego.


PS. Nie rozumiem za bardzo warunku IF , czemu piszeszmy : if (dzien-dzien%10 >9) , a nie po prostu : if (dzien>9).... Czy to nie wyjdzie na to samo ?

No właśnie nie wyjdzie to samo -
załóżmy, że dzien=13, więc dzien-dzien%10=13-3=10, dzien!=dzien-dzien%10

starałem się to zrobić na samym modulo ;] można by zamiast tego np. porównywać długość ciągu albo go przycinać.
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

modulo - sumowanie liczb

Post autor: soku11 »

No to może ja podam kod nieco bardziej zrozumiały (tak mi się wydaje):

Kod: Zaznacz cały

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


int sumaDwa(int dwucyfrowa)
{
  int wynik=0;

  wynik+=dwucyfrowa/10; /* dodaje nam dziesiatki */
  dwucyfrowa%=10;       /* z np 23 robi nam 3    */

  wynik+=dwucyfrowa;    /* dodaje nam pozostale jednosci */

  return wynik;
}

int sumaCztery(int czterocyfrowa)
{
  int wynik=0;

  wynik+=czterocyfrowa/1000;      /* sumuje tysiace  */
  czterocyfrowa%=1000;            /* z 1234 robi 234 */

  wynik+=czterocyfrowa/100;       /* sumuje setki    */
  czterocyfrowa%=100;             /* z 234 robi 34   */

  wynik+=sumaDwa(czterocyfrowa);  /* sumuje dziesiatki i jednosci */

  return wynik;
}



int main()
{
  int dzien=0;
  int miesiac=0;
  int rok=0;

  int suma=0;

  printf("Podaj dzien Twoich urodzin: ");
  scanf("%d",&dzien);
  printf("Podaj miesiac Twoich urodzin: ");
  scanf("%d",&miesiac);
  printf("Podaj rok Twoich urodzin: ");
  scanf("%d",&rok);

  /* pomijam sprawdzanie poprawnosci dzien, miesiac, rok */

  suma=sumaCztery(rok)+sumaDwa(miesiac)+sumaDwa(dzien);
  printf("Suma1= %d
",suma);

  suma=sumaDwa(suma);
  printf("Suma2= %d
",suma);

  suma=sumaDwa(suma);
  printf("Suma3= %d
",suma);


  return EXIT_SUCCESS;
}

Pozdrawiam.
ODPOWIEDZ