brak konwersji ciągu cyfr

brak konwersji ciągu cyfr
  • Rejestracja: dni
  • Ostatnio: dni
0

Siemanko, czemu program zamienia każdą cyfrę osobno, nie uwzględnia ciągu znaków które tworzą cyfrę.

Kopiuj
 
#include <stdio.h>
#include <fcntl.h>
#include <stdlib.h>
#include <conio.h>

void changeToRoman(int a)
{    
    int s;
    int d;
    int j;
    int t;    
    int plik2;
    
   	plik2 = open("liczbyRzymskie.txt",O_WRONLY|O_APPEND);
		if(plik2 == -1)	
		{
		perror("Blad otwarcia pliku!");
		exit(1);
		}
    if(a!=0)
     {
       j = a%10;
       d = (a/10)%10;
       s = a/100;
       t = a/1000;
       
       
 	switch(t)
   { 
      case 1: write (plik2,"M",1); break;
      case 2: write (plik2,"MM",2); break;
      case 3: write (plik2,"MMM",3); break;
   }
 
	switch(s)
   { 
      case 1: write (plik2,"C",1); break;
      case 2: write (plik2,"CC",2); break;
      case 3: write (plik2,"CCC",3); break;
      case 4: write (plik2,"CD",2); break;
      case 5: write (plik2,"D",1); break;
      case 6: write (plik2,"DC",2); break;
      case 7: write (plik2,"DCC",3); break;
      case 8: write (plik2,"DCCC",4); break;
      case 9: write (plik2,"CM",2); break;
   }
   
    	switch(d)
   { 
      case 1: write (plik2,"X",1); break;
      case 2: write (plik2,"XX",2); break;
      case 3: write (plik2,"XXX",3); break;
      case 4: write (plik2,"XL",2); break;
      case 5: write (plik2,"L",1); break;
      case 6: write (plik2,"LX",2); break;
      case 7: write (plik2,"LXX",3); break;
      case 8: write (plik2,"LXXX",4); break;
      case 9: write (plik2,"XC",2); break;
   
   }
	switch(j)
   { 
      case 1: write (plik2,"I",1); break;
      case 2: write (plik2,"II",2); break;
      case 3: write (plik2,"III",3); break;
      case 4: write (plik2,"IV",2); break;
      case 5: write (plik2,"V",1); break;
      case 6: write (plik2,"VI",2); break;
      case 7: write (plik2,"VII",3); break;
      case 8: write (plik2,"VIII",4); break;
      case 9: write (plik2,"IX",2); break;
   }     
 
   write (plik2," ",1);
   close(plik2);
}
}

int main()
{
    int plik;
    int l;
	char znak[1];
	plik = open("liczbyArabskie.txt", O_RDONLY);
	if(plik == -1)
	{
	 perror("Blad otwarcia pliku!");
	 exit(1);
	}
	
   int size = 0;
   while((size=read(plik, znak, 1))>0)
	{
	l = atoi(znak);
	if(l > 0)
	{
		changeToRoman(l);
	}
	}
	int i=0;
	scanf("%c", &i);
    return 0;
}

  • Rejestracja: dni
  • Ostatnio: dni
1

..które tworzą *liczbę

twonek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2500
0

A jak jest liczba 1000 to co dostaje w wejściu? Cyfry 1, 0, 0 i 0. No i pierwszy raz widzę deklarację tablicy 1-elementowej.

  • Rejestracja: dni
  • Ostatnio: dni
0

ale jak napisze np char znak[15]; to to nic nie zmienia

twonek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2500
0
Wielki Samiec napisał(a):

ale jak napisze np char znak[15]; to to nic nie zmienia

A co Twoim zdaniem ta liczba 1 oznacza tutaj?

Kopiuj
 while((size=read(plik, znak, 1))>0)
  • Rejestracja: dni
  • Ostatnio: dni
0

no ok...przy 4 pokazuję np MXLII, ale niestety jest to błędy wynik. W pliku wejsciowym mam ghubhj 4 ijhiubgui 2 ikgbiu 1242 412 ijhiou 63 uighbi 2014 iubujbk 1 555 5 jako żeby łapało same liczby i je konwertowało

  • Rejestracja: dni
  • Ostatnio: dni
0

MXLII CDXII LXIII XIV DLV DLV to jest na wyjściu

  • Rejestracja: dni
  • Ostatnio: dni
0

widze ze na tym forum nikt nie chce pomoc tylko ma pretensje ze ktos pyta

stryku
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 607
1
Wielki Samiec napisał(a):

no ok...przy 4 pokazuję np MXLII, ale niestety jest to błędy wynik. W pliku wejsciowym mam ghubhj 4 ijhiubgui 2 ikgbiu 1242 412 ijhiou 63 uighbi 2014 iubujbk 1 555 5 jako żeby łapało same liczby i je konwertowało

Bo jak dasz np:

Kopiuj
 while((size=read(plik, znak, 4))>0)

to bedzie czytać pokolei
ghub
hj 4
ijh...

Jak na moje to czytaj po jednym znaku i sprawdzaj czy jest cyfrą. Jak jest to czytaj dopóki czytasz cyfry. Jak się cyfry skończą to przekazuj dopiero całą liczbę do funkcji

twonek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2500
1
Czarny Krawiec napisał(a):

widze ze na tym forum nikt nie chce pomoc tylko ma pretensje ze ktos pyta

No tak, utworzyliśmy związek zawodowy i strajkujemy, bo płacą nam za mało za pomaganie. Napisz skargę do trybunału konstytucyjnego.

Wróżki nie jesteśmy, skąd mamy wiedzieć jak poprawiłeś swój program skoro go nie pokazujesz. Zmieniłeś parametr funkcji read? Na jaki? I jakbyś nie zauważył to pytania są formą pomocy, natomiast pretensje ma w tym wątku tylko 1 osoba.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.