Konwersja liczb wczytanych z pliku

0

Pomóżcie :s Dlaczego ten program zapisuje do pliku takie rzeczy: H˙˙˙˙˙˙˙6 Ú˙˙˙˙˙˙˙6 0˙˙˙˙˙˙˙6 ˙˙˙˙˙˙˙6 ˛˙˙˙˙˙˙˙6
˙˙˙˙˙˙˙6
˙˙˙˙˙˙˙6 ś˙˙˙˙˙˙˙6 k˙˙˙˙˙˙˙6 7˙˙˙˙˙˙˙6 Ř˙˙˙˙˙˙˙6 c˙˙˙˙˙˙˙6 ŕ˙˙˙˙˙˙˙6 Ů˙˙˙˙˙˙˙6

 

```c
 #include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main ()
 {
   FILE *plik;
   FILE *plik2;
   
   int n;
   char tab[30];
   int l=0;
   
   plik = fopen("liczbyArabskie.txt", "r"); 
   plik2=fopen("liczbyRzymskie.txt","w");
   
   if((!plik)||(!plik2))    
   {
    printf("Otwarcie nieudane");
    exit(-1);
   }
   while (feof(plik) == 0) 
   {
    fscanf (plik, "%d",&n);
    if(n>=1000)
    {
    	n=n-1000;
    	l++;
	}
	switch(l)
	{
		case 1:
			*tab='M';
			break;
		case 2:
			*tab='M'+'M';
			break;
		case 3:
			*tab='M'+'M'+'M';
			break;
	}
	if(n>=900)
		{
			*tab=*tab+'C'+'M';
			n=n-900;
		}
	if(n>=800)
	{
		*tab=*tab+'D'+'C'+'C'+'C';
		n=n-800;
	}
	if(n>=700)
	{
		*tab=*tab+'D'+'C'+'C';
		n=n-700;
	}
	if(n>=600)
	{
		*tab=*tab+'D'+'C';
		n=n-600;
	}
	if(n>=500)
	{
		*tab=*tab+'D';
		n=n-500;
	}
	if(n>=400)
	{
		*tab=*tab+'C'+'D';
		n=n-400;
	}
	if(n>=300)
	{
		*tab=*tab+'C'+'C'+'C';
		n=n-300;
	}
	if(n>=200)
	{
		*tab=*tab+'C'+'C';
		n=n-200;
	}
	if(n>100)
	{
		*tab=*tab+'C';
		n=n-100;
	}
	if(n>=90)
	{
		*tab=*tab+'X'+'C';
		n=n-90;
	}
	if(n>=80)
	{
		*tab=*tab+'L'+'X'+'X'+'X';
		n=n-80;
	}
	if(n>=70)
	{
		*tab=*tab+'L'+'X'+'X';
		n=n-70;
	}
	if(n>=60)
	{
		*tab=*tab+'L'+'X';
		n==n-60;
	}
	if(n>=50)
	{
		*tab=*tab+'L';
		n=n-50;
	}
	if(n>=40)
	{
		*tab=*tab+'X'+'L';
		n=n-40;
	}
	if(n>=30)
	{
		*tab=*tab+'X'+'X'+'X';
		n=n-30;
	}
	if(n>=20)
	{
		*tab=*tab+'X'+'X';
		n=n-20;
	}
	if(n>=10)
	{
		*tab=*tab+'X';
		n=n-10;
	}
	if(n==9)
	{
		*tab=*tab+'I'+'X';
		n=n-9;
	}
	if(n==8)
	{
		*tab=*tab+'V'+'I'+'I'+'I';
		n=n-8;
	}
	if(n==7)
	{
		*tab=*tab+'V'+'I'+'I';
		n=n-7;
	}
	if(n==6)
	{
		*tab=*tab+'V'+'I';
		n=n-6;
	}
	if(n==5)
	{
		*tab=*tab+'V';
		n=n-5;
	}
	if(n==4)
	{
		*tab=*tab+'I'+'V';
		n=n-4;
	}
	if(n==3)
	{
		*tab=*tab+'I'+'I'+'I';
		n=n-3;
	}
	if(n==2)
	{
		*tab=*tab+'I'+'I';
		n=n-2;
	}
	if(n==1)
	{
		*tab=*tab+'I';
		n=n-1;
	}
	printf("%s",tab);
	fprintf(plik2,"%s ",tab);
   }
   fclose(plik);
   fclose(plik2);
   exit(0);
}
2

bo 'I' to liczba odpowiadająca kodowi "I" w tablicy ASCII
dodajesz do siebie kody kolejnych znaków i zapisujesz w jednym miejscu

0

:) Jest to jakaś myśl.
Jak mógłbym to poprawić?

0

Może przerób to na tablice i pętle. Wyjdzie całość w 8-ciu wierszach.
Poszukaj na tym forum jest tego mnóstwo.

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