• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Napisanie kodu

VPS Starter Arubacloud
0 głosów
191 wizyt
pytanie zadane 7 maja 2021 w C i C++ przez MuratPasza Nowicjusz (120 p.)
zamknięte 10 maja 2021 przez MuratPasza

Witam. 

#include <iostream>
#include <time.h>
#include <windows.h>

using namespace std;
int losowa[22];
int i;
int main()
{
srand(time(NULL))

 

 

komentarz zamknięcia: Problem zostal rozwiazany
komentarz 7 maja 2021 przez urbix01 Gaduła (3,290 p.)
chcesz żeby przepisać Ci ten kod na C?
komentarz 7 maja 2021 przez urbix01 Gaduła (3,290 p.)
edycja 7 maja 2021 przez urbix01
Jeżeli tak to wszystkie "cout" zmień na printf("Tekst to wyświetlenie %d ", zmienna); gdzie %d oznacza w którym miejscu w tekście ma być wyświetlona liczba całkowita a zamienna to po prostu jaka zmienna ma być wstawiona w miejsce %d. Wszystkie "cin" zmień na scanf("%d", &zmienna) gdzie %d informuje że ma zostać wczytana liczba całkowita a &zmienna do jakiej zmiennej ma być przypisana ta wartość. Libke <iostream> zamień na <stdio.h> a <string> na <string.h> a jak to nie pomoże to zamiast zmienej typu string użyj tablicy char. Reszta bez zmian
komentarz 7 maja 2021 przez MuratPasza Nowicjusz (120 p.)

Właśnie jestem w trakcie zmieniania tak jak mówisz, tylko zatrzymałem się na tym etapie i nie jestem pewien co tutaj zrobić. 

cin>>a;//wczytuje liczbe do stringa
len = a.length(); //dlugosc stringa, czyli ilosc cyfr w liczbie
cyfra = atoi(a.c_str());//string do char i char do int.
}
int* temp = new int[len];//tablica o dlugosci cyfr w liczbie

Chodzi dokładnie o cyfra = atoi(a.c_str()). W C nie ma stringow, wiec mam po prostu zmienic to na tablice char?

komentarz 7 maja 2021 przez urbix01 Gaduła (3,290 p.)
Wychodzi na to że nie masz innego wyjścia
komentarz 7 maja 2021 przez urbix01 Gaduła (3,290 p.)
edycja 7 maja 2021 przez urbix01

@MuratPasza, jak się uda to daj znać i jeżeli masz wolną chwilę to zajrzyj na moją stronkę. Starałem się tam opisać podstawy C w jak najprostszy sposób, więc może Cię to zainteresuje. www.trzykody.pl

komentarz 7 maja 2021 przez MuratPasza Nowicjusz (120 p.)

Zatrzymalem sie jeszcze w jednym momencie, mianowicie przesunięciach. 

cout<<setki[temp[0]]<<dziesiatki[temp[1]]<<jednosci[temp[2]];

Jak moge to zmienic? Szukam w internecie i nie moge nic znalezc na ten temat

komentarz 7 maja 2021 przez MuratPasza Nowicjusz (120 p.)

Zmieniłem według tego jak mówiłes, ale nie dziala to do konca dobrze. Po wybraniu czy chce skonwertowac liczby z arabskiego na rzymskie lub na odwrot, cmd wyłącza się. 

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


int trans(char a){
switch ( a ){
case 'X':return 10;break;
case 'I':return 1;break;
case 'V':return 5;break;
case 'L':return 50;break;
case 'C':return 100;break;
case 'D':return 500;break;
case 'M':return 1000;break;
default: return 0; break;
}
}
int main()
{
char jednosci[12][255] = {" ", "I", "II", "III", "IV", "V", "VI",
"VII", "VIII", "IX", '\0'};
char dziesiatki[12][255] = {" ", "X", "XX", "XXX", "XL", "L", "LX",
"LXX", "LXXX", "XC", '\0'};
char setki[12][255] = {" ", "C", "CC", "CCC", "CD", "M", "MC", "MCC",
"MCCC", "CM", '\0'};
char tysiace[12][255] = {" ", "M", "MM", "MMM", '\0'};

printf("Wybierz 1 dla konwersji arabska->rzymska i 2 dla rzymska->arabska: ");
int wybor=0;
scanf("%d", &wybor);
if(wybor==1){
printf("Podaj cyfre arabska (nie wieksza niz 3999): ");
char a[10];
int cyfra=0;
int len;
while(!cyfra){ // sprawdzenie czy podana jest liczba
scanf("%c",&a);//wczytuje liczbe do stringa
len = strlen(a); //dlugosc stringa, czyli ilosc cyfr w liczbie
cyfra = atoi(a[10]);//string do char i char do int.
}
int* temp = (char *) malloc(sizeof(char) * 10);;//tablica o dlugosci cyfr w liczbie
int i=len-1;// iterator pomniejszony o jeden (zaczynamy od o tablica)
int modul=10;// dzielenie przez 10
do {
temp[i] = cyfra%modul;
cyfra = cyfra/modul;
i--;
} while (cyfra>0);
//petla przepisuje po jednej cyfrze z liczby i wrzuca je do tablicy
printf("Liczba arabska zapisana w systemie rzymskim: ");
//4 mozliwosci dlugosci liczby, wiec 4 ify. Mozna to zrobic tez petla.
if(len == 4) printf("%c<<%c<<%c<<%c", tysiace[temp[0]], setki[temp[1]], dziesiatki[temp[2]], jednosci[temp[3]] );

if(len == 3)
printf("%c<<%c<<%c", setki[temp[0]], dziesiatki[temp[1]], jednosci[temp[2]]);

if(len == 2)
printf("%c<<%c", dziesiatki[temp[0]], jednosci[temp[1]]);

if(len == 1)
printf("%c", jednosci[temp[1]]);
free (temp);

}
if(wybor==2){

char a[10];
printf("Podaj cyfre w systemie rzymskim: ");
scanf("%c", &a);
int element=0, wynik=0, temp=0, i=0;
for (i=0;i<strlen(a);++i)
{
element = trans(a[i]);
if(i<strlen(a)-1){
temp=trans(a[i+1]);
}
if (temp>element)
{
element =0-element;
}
wynik=element+wynik;
}
printf("%d", wynik);
}
return 0;
}

 

1
komentarz 8 maja 2021 przez Oscar Nałogowiec (29,290 p.)
edycja 8 maja 2021 przez Oscar

@MuratPasza,
 W tym kontekście << to nie przesunięcie bitowe, to właśnie wypisanie i należy to zamienić na printf.

printf("%s%s%s", setki[temp[0]], dziesiatki[temp[1]], jednosci[temp[2]]);

A jeśli chodzi o zamianę wartości na "cyfry rzymskie", to ostatnio pojawił się taki temat i tam podano kod który w tą stronę działał. Kluczem jest wydzielenie kilku dodatkowych wartości takich jak 9, 90, 900 itp, które konwertowane są jako dwa znaki w notacji rzymskiej.

komentarz 9 maja 2021 przez VBService Ekspert (251,210 p.)

to ostatnio pojawił się taki temat

Zamiana liczb rzymskich na arabskie

Podobne pytania

+1 głos
1 odpowiedź 256 wizyt
0 głosów
1 odpowiedź 631 wizyt
pytanie zadane 12 grudnia 2017 w HTML i CSS przez MJ36 Użytkownik (670 p.)
0 głosów
4 odpowiedzi 671 wizyt

92,452 zapytań

141,262 odpowiedzi

319,081 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...