Re: C kód átfordítása C#-ba :)
Nits László
nits at jedlik.eu
2014. Dec. 13., Szo, 18:21:57 CET
Szia Zsolti!
A következő kód hasonló, tesztelni nincs most időm :-)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace NumConverter
{
public class BaseConverter
{
public string ToBase(string number, int start_base, int target_base)
{
return FromBase10(ToBase10(number, start_base), target_base);
}
int ToBase10(string number, int start_base)
{
if (start_base < 2 || start_base > 36) return 0;
if (start_base == 10) return Convert.ToInt32(number);
char[] chrs = number.ToCharArray();
int m = chrs.Length - 1;
int n = start_base;
int x;
int rtn = 0;
foreach (char c in chrs)
{
if (char.IsNumber(c)) x = int.Parse(c.ToString());
else x = Convert.ToInt32(c) - 55;
rtn += x * (Convert.ToInt32(Math.Pow(n, m--)));
}
return rtn;
}
string FromBase10(int number, int target_base)
{
if (target_base < 2 || target_base > 36) return "";
if (target_base == 10) return number.ToString();
int n = target_base;
int q = number;
int r;
string rtn = "";
while (q >= n)
{
r = q % n;
q = q / n;
if (r < 10) rtn = r.ToString() + rtn;
else rtn = Convert.ToChar(r + 55).ToString() + rtn;
}
if (q < 10) rtn = q.ToString() + rtn;
else rtn = Convert.ToChar(q + 55).ToString() + rtn;
return rtn;
}
}
class Program
{
static void Main()
{
string[] be = File.ReadAllText("be.txt").Split();
int startBase = int.Parse(be[0]);
int targetBase = int.Parse(be[1]);
string num = be[2];
BaseConverter bc = new BaseConverter();
File.WriteAllText("ki.txt",bc.ToBase(num,startBase,targetBase));
}
}
}
2014. december 12. 12:50 Szalayné Tahy Zsuzsa írta, <sztzs at infokatedra.hu>:
>
> Miért?
>
> - Hibát keresel?
> - Meg kell tanulnod a C#-ot?
> - Meg kell tanulnod a C-t?
>
> Egy dolog, hogy valamit meg kellene érteni és egy másik, hogy írok egy
> oldal kódot, amiben minden nyelvi fordulat 3+-szor szerepel.
>
>
> SzTZs
>
> On Fri, Dec 12, 2014 at 12:28 PM, Zsolt Nagy <nagyzsolt80 at gmail.com>
> wrote:
>
>> Sziasztok!
>>
>> C kód:
>>
>> #include<stdio.h>
>>
>> int main()
>> {
>> int a,cel,szamok[255],szamegesz=0,i=0,db=0,mar=0,hiba=0,x,q=1,j;
>> char szam[255],szamkesz[255],a2;
>> FILE * f;
>> f=fopen("be.txt","rt");
>> while (!feof(f))
>> {
>> fscanf(f,"%d %d %s",&a,&cel,szam);
>> }
>> fclose(f);
>>
>> if (a<2 || a>36 || cel<2 || cel>36)
>> {
>> hiba=1;
>> }
>> else
>> {
>> if (a>=2 && a<=10) { //alap stringesítése
>> a2=a+48-1;
>> }
>> else if (a>=11 && a<=36) {
>> a2=a+55-1;
>> }
>> while (szam[i]!='\0') { //stringből egész tömb
>> if (szam[i]<'0' || szam[i]>a2 || szam[i]=='-') {
>> hiba=1;
>> break;
>> } else if (szam[i]>='A' && szam[i]<='Z') {
>> szamok[i]=szam[i]-55;
>> } else if (szam[i]>='0' && szam[i]<='9') {
>> szamok[i]=szam[i]-48;
>> }
>> db++;
>> i++;
>> }
>> db--;
>> }
>> f=fopen("ki.txt","wt");
>> if (hiba==1) {
>> fprintf(f,"HIBA\n");
>> fclose(f);
>> return 0;
>> } else if (db==0 && szamok[0]==0) {
>> fprintf(f,"0\n");
>> fclose(f);
>> return 0;
>> } else {
>> for (i=0;i<=db/2;i++) { //helyiérték megfordítása
>> x=szamok[i];
>> szamok[i]=szamok[db-i];
>> szamok[db-i]=x;
>> }
>> for(i=0;i<=db;i++) { //dec-be
>> szamegesz+=szamok[i]*q;
>> q*=a;
>> }
>> if (cel==10) {
>> fprintf(f,"%d\n",szamegesz);
>> fclose(f);
>> return 0;
>> }
>> i=0; //cél számrendszerbe
>> while(szamegesz>0) {
>> mar=szamegesz%cel;
>> if (mar>=10 && mar<=35) {
>> szamkesz[i]=mar+55;
>> } else {
>> szamkesz[i]=mar+48;
>> }
>> szamegesz/=cel;
>> i++;
>> }
>> for(j=i-1;j>=0;j--) {
>> fprintf(f,"%c",szamkesz[j]);
>> }
>> fprintf(f,"\n");
>> fclose(f);
>> return 0;
>> }
>> return 0;
>> }
>>
>>
>>
>> segítenétek C#-ba tenni?
>>
>> Köszi
>>
>> Zsolt
>>
>>
>>
>> _______________________________________________
>> Techinfo mailing list
>> Techinfo at lista.sulinet.hu
>> Fel- és leiratkozás: http://lista.sulinet.hu/mailman/listinfo/techinfo
>> Illemtan: http://www.szag.hu/illemtan.html
>> Ügyfélszolgálat FAQ: http://sulinet.niif.hu/
>>
>>
> _______________________________________________
> Techinfo mailing list
> Techinfo at lista.sulinet.hu
> Fel- és leiratkozás: http://lista.sulinet.hu/mailman/listinfo/techinfo
> Illemtan: http://www.szag.hu/illemtan.html
> Ügyfélszolgálat FAQ: http://sulinet.niif.hu/
>
>
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lista.sulinet.hu/pipermail/techinfo/attachments/20141213/b40b0a11/attachment.html>
További információk a(z) Techinfo levelezőlistáról