Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] - problem z wpisaniem symbolu na konkretne pole

Ostatnio zmodyfikowano 2014-11-21 20:45
Autor Wiadomość
kevindurant95
Temat założony przez niniejszego użytkownika
[C++] - problem z wpisaniem symbolu na konkretne pole
» 2014-11-21 14:42:10
Witam, prosiłbym o pomoc dotyczącą wpisania na planszę dowolnego symbolu (może to być np. #), poprzez wpisanie do konsoli współrzędnych pola (np. A5).
Oto kod planszy:

void rysuj_plansze()
{
     for (int i=0;i<6;i++)
     {
     cout << " +-----+-----+-----+-----+-----+-----+"<<endl;
     cout << " |"<< setw(6) <<"|" << setw(6) <<"|" << setw(6) <<"|"<< setw(6) <<"|"<< setw(6) <<"|"<< setw(6) <<"|"<<endl;
     cout << i+1 <<"|"<< setw(6) <<"|" << setw(6) <<"|" << setw(6) <<"|"<< setw(6) <<"|"<< setw(6) <<"|"<< setw(6) <<"|"<<endl;
     }
     cout << " +-----+-----+-----+-----+-----+-----+"<<endl;
     cout << "    A     B     C     D     E     F   " << endl;
}

a poniżej link do wyglądu graficznego planszy:
http://i62.tinypic.com/2edvyw5.jpg

Z góry dziękuję za wszelakie przejawy dobroci :)
P-121102
wilkoo13
» 2014-11-21 14:48:49
Jak podałeś drugą część zadania to wiem że trzeba je zrobić za pomocą tablic. Niestety ci nie pomogę gdyż ich nie umiem jeszcze. Ale pomogą ci inni na tym forum. Możesz też skorzystać z kursu na tej stronie http://cpp0x.pl/kursy/Kurs-C++/Poziom-2/345 Jeśli potrzebujesz pomocy.
P-121103
NopeDotAvi
» 2014-11-21 15:20:16
C/C++
std::cout << "Podaj pozycje pozioma: ";
std::cin >> pozycjaPozioma; //wymyslona nazwa, mozesz miec jaka chcesz
std::cout << std::endl << "Podaj pozycje pionowa: ";
std::cin >> pozycjaPionowa; //wymyslona nazwa

twojaTablica[ pozycjaPionowa ][ pozycjaPozioma ] = '#'; //jestem praktycznie pewien ze w konsoli najpierw pion potem poziom
Wstawiaj kod w znaczniki [ cpp ] tu kod [/ cpp]
P-121104
kevindurant95
Temat założony przez niniejszego użytkownika
» 2014-11-21 15:44:00
A jakieś inne propozycje, bo ta niekoniecznie działa?

Może zacznę od początku. Mam wypisać na ekranie planszę (wyżej określoną) i poprzez podanie konkretnego pola (np. B5) wstawić w to pole jakiś dowolny znak, symbol. Może trzeba sprząc czymś funkcję rysowania planszy z funkcją wpisywania w planszę znaków?
P-121107
NopeDotAvi
» 2014-11-21 16:20:07
działa, tylko nie wpisujesz B5 tylko 2 a potem 5. Podaj cały kod.
P-121112
kevindurant95
Temat założony przez niniejszego użytkownika
» 2014-11-21 17:09:55
No a właśnie bym chciał, żeby wpisywać B5, a nie 25. Rozumiem, o co Ci chodzi, jednakże właśnie meritum sprawy jest takie, że chciałbym, by było litera+cyfra, a nie cyfra+cyfra. Proszę wybaczyć moje nieogarnięcie, jestem początkującym programistą.
P-121113
NopeDotAvi
» 2014-11-21 18:53:21
Ok moje dwa proponowane wyjścia z takiej sytuacji:

najpierw:

Robisz dwie zmienne:
-
char znak;
 który przechowuje znak wpisany z klawiatury
-
int polozenie;
 - bo nie możemy do indeksu wpisać znaku

teraz wczytujesz znak
cin >> znak;

a) bardziej zrozumiałe

i w ifach sprawdzasz:
C/C++
if( znak == 'A' )
{
    polozenie = 0; //bo indeksy tablicy są numerowane od 0
}
if( znak == 'B' )
{
    polozenie = 1;
}
i tak aż do 'F' gdzie w takim przypadku
polozenie = 5;

b)raczej dla Cb będzie mniej zrozumiałe
Odejmujesz od znak liczbę 65. Czemu tak? Każdy znak ma swoj unikalny numer w tablicy ASCII (tu: http://www.asciitable.com/)
Więc każdy
char
 ma swój numer. Jak widać duże A zaczyna się na miejscu 65, potem kolejne duże litery alfabetu mają numer o 1 większy od poprzedniego.
Więc jeżeli ktoś wpisze takie współrzędne: A5  to od A odejmie 65, czyli wychodzi miejsce o współrzędnych 65 - 65 = 0-5.
Gdy ktoś wpisze B to (zgodnie z tym, że każdy kolejny znak jest większy o 1 od poprzedniego) będzie 66 - 65 = 1, czyli wychodzi nam pozycje 1-5

taki kod jest zapisany tak:
C/C++
#include <iostream>

using namespace std;

int main()
{
    char znak;
    int polozeniePionowe; //nie jestem pewien na 100% ze najpierw jest pion, ale na 99% juz tak.
    cin >> znak; //wczytujemy znak (np A)
    int polozenie = znak - 65; //odejmujemy
    cout << polozenie << endl; //wypisujemy by sprawdzic czy dziala, mozna pominac
    return 0;
}
 
P-121117
kevindurant95
Temat założony przez niniejszego użytkownika
» 2014-11-21 20:45:04
Jeśli chodzi o podpunkt a, to o jakiej tablicy mówimy?
P-121129
« 1 »
  Strona 1 z 1