programowanie w c zapisywanie liczb w centymatrach, metrach i decymetrach

0

polecenie do zadania jest takie aby jakąś liczbe całkowitą (w centymerach) którą poda użytkownik wyświetlić w metrach, centymetrach i decymetrach. Jakie należy wprowadzić polecenia aby wyświetliły mi się liczby w podanych jednostkach ? np. 1234cm to 12m,3dm i4cm

0

Napisz program, który będzie zamieniał cm na inne jednostki.
Nie rozumiem problemu. Proste mnożenie.

0
using System;
class MainClass
{
  public static void Main (string[] args)
  {
  	int centymetry = 120;
  	
  	int metry = centymetry / 100;
  	
  	int reszta = centymetry % 100;
  	
  	if(reszta == 0)
  	{
  		Console.WriteLine(centymetry + " centymetrów to: ");
  		Console.WriteLine(metry + " metrów.");
  	}
  	else
  	{
  		int decymetry = reszta / 10;
  		int reszta2 = reszta % 10;
  		if(reszta2 == 0)
  		{
  			Console.WriteLine(centymetry + " centymetrów to: ");
  		    Console.Write(metry + " metrów i");
  		    Console.Write(decymetry + " decymetrów.");
  		}
  		else
  		{
  			Console.WriteLine(centymetry + " centymetrów to: ");
  		    Console.Write(metry + " metrów,");
  		    Console.Write(decymetry + " decymetrów i ");
  		    Console.Write(reszta2 +  " centymetrów");
  		}
  	}
  	
    
  }
}
1

Zmienna length oznacza ilosc cm

...
//pomijam kwestię wczytania

   int m = length / 100;    // Przypisujemy zmiennej m wartość dzielenia podanej długości przez 100 (ponieważ 1m = 100cm)
   length = length - (m * 100);    // Odejmujemy od podanej długości ilość metrów (wyrażoną w cm dlatego mnożymy to przez 100)
   int dm = length / 10;    // Przypisujemy zmiennej m wartość dzielenia podanej długości przez 10 (ponieważ 1dm = 10cm)
   int cm = length % 10;    // Przypisujemy zmiennej cm wartośc dzielenia modulo (reszty z dzielenia przez daną liczbę)

...
///pomijam kwestię wyprowadzenia danych
2

tak się tego nie robi. Mimo, że jest dobrze!

ostream& PrintDistanceUnits(ostream& out, int distanceInCm)
{
     static struct {
           const int unit;
           const char * const name;
     } units[] = {
           { 100000, " km"},
           { 100, " m"},
           { 10, " dm"},
           { 1, " cm"},
     };
    static const int unitsCount = sizeof(units)/sizeof(units[0]);

    for (int i=0; i<unitsCount; ++i)
    {
          int distanceInCurentUinit = distanceInCm/units[i].unit;
          distanceInCm %= units[i].unit;
          if (distanceInCurentUinit) {
              out << ' ' << distanceInCurentUinit << units[i].name;
          }
    }
    return out;
}

Dzięki temu można dowolnie modyfikować zestaw jednostek zmieniając tylko stałe dane, a nie sam kod.
Przykładowo zrób to samo dla prefiksów jednostek od terra do nano.

0

Witam
Przepisałem kod podany przez MarekR22 w C. Proszę o sprawdzenie poprawności.

 
#include <stdio.h>

struct unit
{
        const unsigned int unit;
        const char *name;
}jednostka;

int main()
{
        unsigned int DistanceInCm;
        unsigned int DistanceInCurrentUnit = 0;
        int i = 0;
        struct unit jednostka[]=
        {
                {100000, " km"},
                {100, " m"},
                {10, " dm"},
                {1, "cm"},
        };
        const int UnitsCount = sizeof(jednostka)/sizeof(jednostka[0]);

        printf("Wprowadz dystans w cm: \n");
        scanf("%u",&DistanceInCm);

        printf("Dystans wynosi: ");
        for(i=0;i<UnitsCount;i++)
        {
                DistanceInCurrentUnit=DistanceInCm/jednostka[i].unit;
                DistanceInCm%=jednostka[i].unit;
                if(DistanceInCurrentUnit)
                        printf("%d - %s ",DistanceInCurrentUnit,jednostka[i].name);
        }

        return 0;
}

Pomijam poprawnośc wprowadzania danych i przekroczenie zakresu.
MarekR22 pisałem też podobne programy do przeliczania ilości dni na lata miesiące tygodnie, albo innych jednostek, ale nie pomyślałem zeby te dane na sztywno umieścic w strukturze. Podałeś kawał dobrego, tłustego i logicznego kodu. Podoba mi się ten kod. Mam do Ciebie prośbę jeśli masz jakieś zadania z programowania czy mógłbyś proszę wysłac mi kilka do rozwiązania i udzielic kilku wskazówek. Albo podac materiały do nauki programowania z których korzystałeś, bo pomimo, że algorytm nie jest skomplikowany, to Twój kod nie jest trywailny.

Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1