Dodaj do ulubionych

[C] Przepisanie z int na char

01.02.06, 20:35
Mam tablice 13 elementów typu int(rozdana talia kart) o różnych wartościach
(losowe pomiędzy 1 a 52) i potrzebuję, aby zamieniał te liczby na odpowiednie
karty i je wpisywał do dwóch innych tablic (w jedej karty, np. A, 2, W, K, a w
drugiej kolory dla każdej z kart), jako char.Na razie robię to tak:

void przepisywanie(int gracz1[], int gracz2[], int gracz3[], int gracz4[])
/*funkcja przepisujaca dane uzyskane z losowania na karty*/
{ int i; char karty1[13], karty2[13], karty3[13], karty4[13];
char kolory1[13], kolory2[13], kolory3[13], kolory4[13];
for (i = 0; i<=12; i++) {
if((gracz1 /13) == 0) strcpy(karty1 , "A"); /*gracz 1 */
if((gracz1 /13) == 0) strcpy(karty1 , "2");
//itd dla pozostałych kart
if((gracz1 /13) == 0) strcpy(kolory1 , "t");
if((gracz1 /13) == 0) strcpy(kolory1 , "k"); } //itd. dla pozostałych kolorów
for (i = 0; i<=12; i++) {
printf("%d %c %c ", gracz1 , karty1 , kolory1 ); } }/*koniec funkcji
przepisywanie*/

Dla pozostałych tablic kart i kolorów chcę zrobić to samo. Kompiluje się ale
po uruchomieniu wyskakuje bład: W twoim programie zgłoszono naruszenie praw
dostępu(błąd segmentacji).A poprzednia funkcja, która tworzy tablice
gracz1[13] i pozostałych 'graczy' działa dobrze.Proszę o pomoc.
Obserwuj wątek
    • ktosktomafajnegomisiaczka Re: [C] Przepisanie z int na char 01.02.06, 21:18
      po pierwsze - nie za bardzo kumam jak Ty tlumaczysz te inty na opisy kart.. a
      wlasciwie to nie kumam jakim prawem to mialo by wogole dawac sensowny wynik,
      ale o tymna koncu

      druga sprawinka, najpierw 'tlumaczysz' inty na opisy kart i kolorow, potem je
      wyswietlasz. ale wszezdie w tlumaczeniu uzywasz strcpy, ktore za kazdym razem
      zamazuje Ci poprzednio wpisane dane - chyba raczej chciales uzyc strcat..

      trzecia sprawa - zarowno strcpy jak i strcat kopiuja stringi. string zawsze na
      koncu ma niejawny znak \0, czyli string "A" ma 2 znaki dlugosci. wklejenie 13
      opisow postaci "A","4" czy "5" do tablicy char kolory[13] moze spowodowac ci
      blad krytyczny poniewaz.. sprobujesz do tablicy wpisac 14 charow! 13 liter i na
      koncu \0!

      a co do tego 'tlumaczenia':
      uum.. wybacz pytanie, ale za Chiny Ludowe nie rozumiem co to ma robic..

      for(i=0;i<=12;i++)
      {
      if((gracz1 /13) == 0) ..
      if((gracz1 /13) == 0) ..
      if((gracz1 /13) == 0) ..
      if((gracz1 /13) == 0) ..
      if((gracz1 /13) == 0) ..
      }


      gracz1 ma typ int[], domyslam sie ze jest to tablica 13 elementow. wiec jakie
      znowu dzielenie? wogole czemu dzielenie wskaznika na tablicie? i czemu ==0? i
      czemu to wszytko w petli i=0..12 ?:)

      czy to nie aby mialo byc:
      uum.. wybacz pytanie, ale za Chiny Ludowe nie rozumiem co to ma robic..

      for(i=0;i<=12;i++)
      {
      if((gracz1 [i]) == 1) //AS
      if((gracz1 [i]) == 2) //dwojka
      if((gracz1 [i]) == 3) //trojka
      if((gracz1 [i]) == 4) ..
      if((gracz1 [i]) == 5) ..
      }

      ?:)
      • ktosktomafajnegomisiaczka Re: [C] Przepisanie z int na char 01.02.06, 21:19
        oooops!
        to drugie "uum.. wybacz pytanie, ale za Chiny Ludowe nie rozumiem co to ma
        robic.." to oczywiscie blad za duzego kopiuj-wklej :)
        • redi82 Re: [C] Przepisanie z int na char 01.02.06, 21:33
          Chodzi o to, że talia ma 52 karty, a każdy kolor ma ich trzynaście, więc chodzi
          mi o to, żeby to dzielić, bo co trzynasta karta to as, co trzynasta to dwójka
          itd. a z drugiej strony to karty od 1 do 13 to trefle, od 14 do 26 kara itd.
          Dlatego takie dziwne coś chcę zastosować bo nie mam na to innego pomysłu. A co
          do wcześniejszego to masz rację z tym znakiem końca stringa-zapomniałam o tym.
          gracz1[] ma rzeczywiście definicje int gracz1[13] i jest takich tablic 4 (w
          sumie dają 52 karty i są już w tych tablicach potasowane i rozdane na czterech
          graczy).Stąd całe zamieszanie, że póki co gracze mają karty w postaci
          losowych(to dobrze) liczb, ale chyba każdy wolałby dostać asa trefl, dwójkę pik,
          króla karo itd a nie kartę nr 32, kartę nr8...:) Chyba, że masz pomysł, jak by
          to inaczej zrobić, to jesetm otwarta na propozycje.
          • ktosktomafajnegomisiaczka Re: [C] Przepisanie z int na char 01.02.06, 22:13
            z losowymi wartosciami musisz uwazac, bo one beda *losowe* i gracze dostana
            *losowe* karty.. a przeciez po rozdaniu talii gracze w sumie maja 4 asy, 4
            kroli itd.. totalnie losowe liczby tego nie zagwarantuja!

            nie wiem jak w tej chwili masz napisane 'rozdawanie kart'.
            zakladajac ze jednak masz juz 4 tablice, i ze kazda juz jest wypelniona
            zestawem trzynastu int'ow reprezentujacych wartosci kart
            i tak na przyklad owo reprezentowanie mowi ze:
            int karta
            1 -> As
            2 -> dwojka
            3 -> trojka
            ..
            11 -> walet
            12 -> dama
            13 -> krol

            to tlumaczenie powinno wygladac mnie-wiecej tak:
            (napisalbym to deko inaczej, ale staram sie wprowadzic jak najmniej zmian
            wzgledem Twojego kodu)

            //postac tablicy - int wartosc_kart_gracza_1[13];
            char opiskart[14]; //"bufor" na napis
            opiskart[0]=0; //ustawiamy na poczatku znak \0 - czyli bufor to pusty string
            for(i=0;i<13;++i)
            {
            if(wartosc_kart_gracza_1[i] == 1)strcat(opiskart,"A");
            if(wartosc_kart_gracza_1[i] == 2)strcat(opiskart,"2");
            if(wartosc_kart_gracza_1[i] == 3)strcat(opiskart,"3");
            ..
            if(wartosc_kart_gracza_1[i] == 11)strcat(opiskart,"W");
            if(wartosc_kart_gracza_1[i] == 12)strcat(opiskart,"D");
            if(wartosc_kart_gracza_1[i] == 13)strcat(opiskart,"K");
            }
            //w tym miejscu mamy przygotowany opis dla gracza 1
            //jest on poprawnym prostym stringiem i mozna go wypisac
            printf("Twoje karty: %s\n",opiskart);

            w podobny sposob mozesz wygenerowac opis kolorow..
            ALE reprezentacje kolorow musisz tez gdzies trzymac, najprosciej w osobnych
            tablicach
            • redi82 Re: [C] Przepisanie z int na char 01.02.06, 22:17
              Ok, już rozumiem. Wielkie dzięki :)
              • ktosktomafajnegomisiaczka Re: [C] Przepisanie z int na char 01.02.06, 22:22
                zaden problem :)

Nie pamiętasz hasła

lub ?

 

Nie masz jeszcze konta? Zarejestruj się

Nakarm Pajacyka