ORG

quake.net.pl » Polskie Centrum Quake od 1998 roku



Wersja: Jasna / Ciemna

[C++] nowa linia po pobieraniu

MisieX

Od: 2003-01-04

Ranga: BFG Fragger

Dodano dnia: 2006-03-28 09:13:09

Może znajdzie sie tu jakiś maniak, który mi pomorze :)
Mam taki problem:

Chcę pobrać dane, a później coś napisać, w tej samej linijce, w której uzytkownik wpisywał dane. Dlatego czy nie zna ktoś może jakiejś procedury pobierania, która po zatwierdzeniu enterem nie przejdzie mi do nowej linii? Ewentualnie jak cofnąć kursor do poprzedniej linijki (coś w stylu b ,a najlepiej przeciwieństwo n) ?
Rozwiązania w stylu: czyszczenie ekranu po pobraniu danych i wyświetlanie całej linijki gotowej na nowo niestety odpadają.

1|LaM4

Od: 2003-03-07

Ranga: Newbie

Dodano dnia: 2006-03-28 12:54:45

pobierasz dane w pętli while do momentu gdy pobranym klawiszem będzie #13 (\n lub enter jak kto woli ;)

mniej wiecej tak (nie gwarantuje ze zadziala bo z c/c++ mialem stycznosc w chooy lat temu po raz ostatni) :
char kl;

kl=getch();

while (kl != ’\n’){

cout<<kl ;

;cos tutaj robisz z tym kl, np.: zapisujesz do stringa jakiegos

kl=getch();

}
//tutaj piszesz dalej co ma robic po pojawieniu sie entera.

ksiakos tak :)

MisieX

Od: 2003-01-04

Ranga: BFG Fragger

Dodano dnia: 2006-03-28 14:04:06

Po pierwsze getchar nie getch, po drugie to działa jeszcze gorzej: pobiera dane od użytkownika aż ten wpisze enter, po czym wyswietla je jeszcze raz w nowej linijce i przechodzi jeszcze do kolejnej, wiec teraz wypisuje mi dwa razy co wpisałem, i przechodzi dwie linijki do dołu :D
Dla przykładu poniższy kod spowoduje, że moge pisać dowolny tekst i bedzie mi go wyswietlało, jak wcisne enter, to wyswietli mi w nowej linijce to co wpisałem, ale tylko do pierwszej kropki i przechodzi do nowej linijki:

include

using namespace std;
int main ()

{

  char c;

  puts ("wpisz text. kropka (’.’) w zdaniu spowoduje wyjście:");

  do {

    c=getchar();

    putchar (c);

  } while (c != ’.’);

  return 0;

}

1|LaM4

Od: 2003-03-07

Ranga: Newbie

Dodano dnia: 2006-03-28 22:04:57

LOL zabiles mnie tym pierwszym :) a o bibliotece conio.h i makrze getch nie czytales nigdy?

getchar jest z echem wiec raczej nie nada Ci sie, zeby ci to udowodnic to az zainstalowalem borlanda (czas szukania 10 minut) i nasmarowalem program:

include < stdio.h >include < conio.h >

void main(){

char k;

clrscr();

printf("wpisz costam: ");

while ((k=getch())!=13)

printf("%c",k);

printf(" a tutaj cos po enterze w tej samej linii.");

getch();

}
łączny czas - 12 minut :P biorac pod uwage ze z c/c++ ostatni raz mialem kontakt ... jakies 3 lata temu to i tak niezle :D

Mav_8217

Od: 2003-01-06

Ranga: Quad Damager

Dodano dnia: 2006-03-28 22:57:30

MisieX owned

MisieX

Od: 2003-01-04

Ranga: BFG Fragger

Dodano dnia: 2006-03-28 23:18:59

Jesteś moim Bogiem :D Przepraszam, za te bzdury co powypisywałem, ale C++ ucze się 5 tygodni dopiero :D Jeszcze mam jeden problem, ale narazie spróbuje go sam rozwiązać :) Jeszcze raz bardzo dziękuję.

1|LaM4

Od: 2003-03-07

Ranga: Newbie

Dodano dnia: 2006-03-29 08:27:36

Przestań przepraszac, kazdy kiedys zaczynal.

A z tym bogiem to przegiales :P rydzyk, pis i kaczory czuwają [](//htmlarea/images/smiles/8.gif)  - trzeba uważać [](//htmlarea/images/smiles/2.gif)
A jakbyś miał jeszcze jakieś problemy to pisz, w miare umiejetnosci pomoge.

MisieX

Od: 2003-01-04

Ranga: BFG Fragger

Dodano dnia: 2006-03-31 16:28:45

No to hardcore teraz :D:D:D
Znalazłem fajny programik, który nieco zmodyfikowałem, i chce uzyć go jako funkcje w swoim programie, ale mam problem: chce, żeby przy pobieraniu danych od użytkownika, parametr ’punkty’ był

pobierany z parametru funkcji, tzn żeby użytkownik go nie podawał, bo punkty będą wyliczane przez program. Czyli podajesz tylko imie i nazwisko, a program zapisuje to + punkty do tablic a potem do pliku. Próbowałem sam na różne sposoby, ale nie chciało sie skompilować ;( zmieniaj co chcesz byle działało :PP ... Fragment kodu, który przede wszystkim trzeba zmodyfikować zaznaczyłem. Jak przekazać funkcji parametr punkty wiem, wiec to nie problem :) I sorry ze tak krzywo wyszło :D

Aha. Punkty (te, ktore liczy program i przekazywałby je temu jako parametr funkcji) są typu integer z zakresu 1- 10 000 000

include                                                                                        include                                                                                        include                                                                                        

using namespace std;                                                                                       
      const int MAX=256;  //maks. liczba wpisów w bazie

      char imie [MAX][64];                                                                                        

      char nazwisko [MAX][64];                                                                                        

      char punkty [MAX][9];                                                                                       
void open()                                                             

{                                                                                        

   int i=0;                                                                                        

   ifstream plik;                                                                                       
   plik.open("highscores.txt");                                                                                       
   do {                                                                                       
   if (plik.fail())                                                                                        

      {                                                                                        

      plik.close(); return;                                                                                        

      }                                                                                       
   if (!plik.eof())                                                                                        

      {                                                                                        

      plik.getline(imie[i], sizeof(imie[i]), ’#’);                                                                                        

      plik.getline(nazwisko[i], sizeof(nazwisko[i]),  ’#’);            

      plik.getline(punkty[i], sizeof(punkty[i]), ’#’);                                                                                        

      plik.ignore();                                                                                        

      i++;                                                                                        

     if (i == MAX) break; //zakoncz while - brak                                                                                         miejsc                                                                                        

      }                                                                                        

   } while (!plik.eof()); //az do konca pliku                                                                                       
   plik.close();                                                                                       

}                                                                                       
void save()                                                                                       

{                                                                                        

   int i;                                                                                        

   ofstream plik;                                                                                       
   plik.open("highscores.txt");                                                                                        

   if (plik.fail())                                                                                        

      {                                                                                        

      plik.close();                                                                                         

      cout << "Wystapil blad pliku!" << endl;                                                                                        

      exit(1);                                                                                        

      }                                                                                       
   for (i=0; i       if (imie[i][0] != ’’)                                                                                        

          {                                                                                        

          plik << imie[i] << ’#’                                                                                        

               << nazwisko[i] << ’#’                                                                                        

               << punkty[i] << ’#’ << endl;                                                                                        

          }                                                                                        

   }                                                                                       
   plik.close();                                                                                       

}                                                                                       
void wyswietl(){                                                                                        

     for (int i=0;i

     if (imie[i][0] != ’’){                                                                                        

      cout << "#" << i+1 << imie[i] << "t"                                                                                        

           << nazwisko[i] << "t"                                                                                        

           << punkty[i]   << endl;                                                                                        

      }                                                                                        

      }                                                                                       

}                                                                                       
int main(int argc, char *argv[])                                                                                       

{                                                                                           

    int i, z=0;                                                                                        

    char cmd;                                                                                        

    char temp[MAX];                                                                                            

                                                                                            

    for (i=0; i    imie[i][0] = ’’;                                                                                        

    nazwisko[i][0] = ’’;                                                                                        

    punkty[i][0] = ’’;                                                                                        

    }                                                                                        

                                                                                            

    open();                                                                                        

                                                                                            

    for (i=0; i       if (imie[i][0] != ’’) z++;                                                                                        

                                                                                                  

   cout << "Wolnych wpisow: " << MAX - z << endl << endl         

        << "1. Dodaj nowy wpis" << endl                                      

        << "2. Usun istniejacy wpis" << endl                      

        << "3. Pokaz zawartosc bazy" << endl                         

        << "0. Koniec pracy" << endl << endl                   

        << "? ";                                                                                        

        cin.get(cmd);                                                                                        

   cin.ignore();                                                                                       
   switch (cmd)                                                                                        

      {                                                                                        

      case ’1’:                                                                                        

      //mamy wolne?
      if (z != MAX)                                                  

         {                                                                

         //znajdz pierwszy pusty                            

         for (i=0; i             if (imie[i][0] == ’’)                                

                {                                                          

                cout << "Podaj imie: ";                       

                cin.get(imie[i], sizeof(imie[i]));            

                cin.ignore();                                        
                cout << "Podaj nazwisko: ";                   

                cin.get(nazwisko[i], sizeof(nazwisko[i]));

                cin.ignore();                                                                                                                                
                cout << "Podaj punkty: ";                                                                 

                cin.get(punkty[i], sizeof(punkty[i]));                                                  

                cin.ignore();                                                                                       
                z++; //zwieksz liczbe zajetych                                              

                break; //przerwij wykonywanie petli for                            

                }                                                                                        

         }                                                                                        

         else                                                                                        

         {                                                                                        

         cout << "Brak wolnych wpisow!!!" << endl;                   

         }                                                                                        

      break;                                                                                        

                                                                                        
      case ’2’:                                                                                        

      cout << "Usuwanie - podaj imie: ";                   

      cin.get(temp, sizeof(temp));                    

      cin.ignore();                                                                                        

      for (i=0; i          if (!strcmp(imie[i], temp))                      

             {                                                                                        

             imie[i][0] = ’’;                                                                                        

             nazwisko[i][0] = ’’;                          

             punkty[i][0] = ’’;                                                                                        

             z--;                                                                                        

             cout << "Usunieto wpis!" << endl;                     

             break; //for                                                                                        

             }                                                                                        

      if (i == MAX) cout << "Nie znaleziono takiego wpisu!" << endl;

      break;                                                                                        
                                                                                              

      case ’3’:                                                                                      

      for (i=0; i          {                                                                                        

          if (imie[i][0] != ’’)                                                                                        

                  cout << imie[i] << "t"                                                                                        

                  << nazwisko[i] << "t"                                                                                        

                  << punkty[i] << endl;                                                                                        

          }                                                                                        

      cout << endl;                                                                                        

      break;                                                                                       

                                                                                             
case ’0’:                                                                                        

      break;                                                                                        

      }                                                                                        
                                                                                       

   save();                                                                                        

   wyswietl();                                                                                        

                                                                                            

    system("PAUSE");                                                                                        

    return EXIT_SUCCESS;                                                                                       

}                                                                                       
To będzie ostatnia cegiełka do mojego programu :) Jak to będzie działać to się pochwale swoim dziełem :D:D:D

1|LaM4

Od: 2003-03-07

Ranga: Newbie

Dodano dnia: 2006-04-06 15:43:22

nie za bardzo czaje o co Ci biega, ale:

                cout << "Podaj punkty: ";                                                                 

                cin.get(punkty[i], sizeof(punkty[i]));                                                  

                cin.ignore(); 
skoro chcesz zapisac jakies punkty do tablcy to piszesz:
punkty[i]=cosik();

zamiast tego czerwonego, gdzie cosik() to funkcja zwracajaca typ int i wyliczajaca punkty, tak to zrozumialem.

MisieX

Od: 2003-01-04

Ranga: BFG Fragger

Dodano dnia: 2006-04-06 19:08:54

Tylko sie nie śmiać:
www.wolanscy.toya.net.pl/MM.exe
Mój pierwszy poważny projekt na Podstawy Programowania na studiach :D:D:D 

1|LaM4

Od: 2003-03-07

Ranga: Newbie

Dodano dnia: 2006-04-10 08:13:39

GZ, calkiem ladnie :)

gdybym tylko wiedzial na czym polega mastermind :)))))))

MisieX

Od: 2003-01-04

Ranga: BFG Fragger

Dodano dnia: 2006-04-10 10:34:51

Masz w helpie :PP

[M]aniek

Od: 2003-10-15

Ranga: Quad Damager

Dodano dnia: 2006-04-11 10:25:14

Podoba mi sie. Ile linijek?
Jak Ci sie nudzi (bardzo nudzi) mozesz zagrac w mojego tetrisa ;D
http://www.members.lycos.co.uk/gibclanik/gry_moje/

GRATULUJE WYGRALES!
Uzyskales 2495 punktow!
Grales 0 Godzin | 2 Minut | 47 Sekund

Zakladamy w to klan? :D
Bledy:

  • w helpie zamiast zoltego prostokata jest bialy

  • literowka chyba:

  1. 2495pkt - [M]aniek

Usunac istniejsacy wpis(y)? [ T / N ]

MisieX

Od: 2003-01-04

Ranga: BFG Fragger

Dodano dnia: 2006-04-11 15:44:33

787 :D
Poprawilem juz literowke, dzieki, ale mi w helpie na zolto wyswietla.
W czym napisales tetrisa?

[M]aniek

Od: 2003-10-15

Ranga: Quad Damager

Dodano dnia: 2006-04-11 15:58:24

Wchodze w help i mam bialy, naciskam drugi raz 3 potem 3 i 3 3 3 3 i za ktoryms razem mam zolty, potem znowu bialy :DD. Moze dlatego ze mam win98, ale to bez sensu.
Tetrisa w c++ kompilator DJGPP (RHIDE).