Anonymní profil kozomelec – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

Anonymní profil kozomelec – Programujte.comAnonymní profil kozomelec – Programujte.com

 

Příspěvky odeslané z IP adresy 178.255.169.–

C / C++ › Vyprázdnění bufferu klávesnice
28. 6. 2017   #216827

#4 Staon
Super, děkuji! 

C / C++ › Vyprázdnění bufferu klávesnice
28. 6. 2017   #216823

#2 KIIV

Díky moc za tvůj čas a odpověď! Takže jestli dobře chápu, tak příkaz getchar() kromě samotného znaku načte do paměti i enter? To jsem nevěděl, hned mi to vše dává mnohem větší smysl. 

C / C++ › Vyprázdnění bufferu klávesnice
25. 6. 2017   #216808

Ahoj, začinám s Céčkem a jedu dle učebnice od Pavla Herouta.

Zadání příkladu bylo takové, abych si zkusil funkci závorek v podmínce a uvědomil si jejich rozdíl a důležitost. To jsem pochopil. 
Ale v přiloženém vyřešeném příkladě je u prvního if, while, které pokud dobře chápu, čeká na to, až c = '\n' a pokud to nastane, tak cyklus ukončí. Vůbec nechápu proč to tam je a proč to bez toho nefunguje. A co konkrétně znamená "vyprázdnění bufferu klávesnice". 

Díky za rady a vysvětlení "polopatě".

/*
 * cv05.c    v.2.0
 *
 * Chybna priorita v nacitani a v porovnavani
 * ==========================================
 *
 */

#include <stdio.h>

int main(void)
{
  int c;

  /* spravna priorita */
  printf("Zadej velke pismeno (A az Z): ");
  if ((c = getchar()) >= 'A'  &&  c <= 'Z') {
    printf("Spravna priorita operatoru:\n");
    printf("Bylo zadano pismeno s ASCII hodnotou: %d\n", c);
  }

  /* vyprazdneni bufferu klavesnice */
  while (getchar() != '\n')
    ;

  /* chybna priorita */
  printf("Zadej velke pismeno (A az Z): ");
  if (c = getchar() >= 'A'  &&  c <= 'Z') {
    printf("Chybna priorita operatoru:\n");
    printf("Bylo zadano pismeno s ASCII hodnotou: %d\n", c);
  }
  return 0;
}

kozomelec
Pascal › Výpis hodnoty z funkce
11. 3. 2013   #172619

#2 KIIV
Jsem trotl, děkuju za objasnění, máš pravdu, jen já jsem debil...

kozomelec
Pascal › Výpis hodnoty z funkce
11. 3. 2013   #172613

Zdravím, chtěl bych Vás poprosit o radu.

Naprogramoval jsem tento program  

program retezce;

uses vyskyt;
var danyText: string; co: char;

begin
  writeln('Tento program Vam vypise, kolikrat se dane pismeno, ktere si zvolite,');
  writeln('ve Vami zvolenem retezci pismen vyskytuje + na jakem miste stoji ');
  writeln('prvni a posledni znak tohoto typu');
  writeln;writeln;
  writeln('Zadejte znakovy retezec: ');
  readln(danytext);
  writeln;writeln;
  writeln('Zadejte pismeno, ktere chcete vyhledat: ');
  readln(co);
  writeln('Pismeno je zde: ',PocetVyskytu(danyText,co));
  writeln('Toto pismeno: ',co,' je zde na: ',PrvniVyskyt(danyText,co),' miste.');
  writeln('Toto pismeno: ',co,' je zde na: ',PosledniVyskyt(danyText,co),' miste od konce.');

end.                                    

a tento modul k němu

unit Vyskyt;
interface
 function PocetVyskytu(danytext: string; co: char): integer;
 function PrvniVyskyt(danyText: string; co: char): integer;
 function PosledniVyskyt(danytext: string; co: char): integer;

implementation
function PocetVyskytu(danytext: string; co: char): integer;
 var index, pocetShod: integer;
  begin
   index:=1;
   pocetShod:=0;
   while index<= length(danytext) do
    begin
      if danyText[index]= co then
        inc(pocetShod);
      inc(index);
    end;
   PocetVyskytu:=pocetShod;
  end;

function PrvniVyskyt(danyText: string; co: char): integer;
 var index:integer;
   begin
    index:=1;
    while index<= length(danyText) do
     begin
       if danyText[index] = co then break;
       inc(index);
     end;
    if index<= length(danyText) then PrvniVyskyt:=index else
      PrvniVyskyt:=0;
   end;

function PosledniVyskyt(danyText: string; co: char): integer;
 var index:integer;
   begin
    index:=length(danyText);
    while index >0 do
     begin
       if danyText[index] = co then break;
       dec(index);
     end;
    PosledniVyskyt:= index;
   end;
end.

Vše funguje jak má, kromě výpis, na kterém místě je poslední zvolený znak, vypisuje mi to první a ne poslední. Děkuji za rady.

kozomelec
Pascal › Funkce a procedury
7. 3. 2013   #172409

#4 KIIV
Díky moc za radu!

kozomelec
Pascal › Funkce a procedury
7. 3. 2013   #172406

#2 KIIV
Děkuji moc. Nyní jsem program poupravil, vše jde, akorát tu mám takový malý detail.

Program mi vypíše mocniny od 1 do 10, ale mocninu čísla 10 mi vypíše 2x, jak mohu tento problém vyřešit? Děkuji

program project1;
var n:integer;

  function mocnina: integer;
    var vysledek,poc: integer;
   begin
     poc:=1;
    while poc<=10 do
     begin
       vysledek:=poc*poc;
       vysledek:=vysledek*poc;
       poc:=poc+1;
       writeln(vysledek);
     end;
    mocnina:=vysledek;
   end;
  function SoucetCelychCisel(n: integer): integer;
     var soucet,i : integer;
       begin
        soucet:=0;
        i:=0;
        while i<=n do
         begin
           soucet:=i+soucet;
           i:=i+1;
         end;
        SoucetCelychCisel:=soucet;
      end;
procedure NactiVstupOdUzivatele;
begin
   write('Zadej cele cislo n: ') ;
   read(n);
end;

begin
  write('Tento program vam vypise tabulku tretich mocnin cisel od 1 do 10');
  write(' + soucet vsech celych cisel od 1 do zvoleneho cisla n');
  writeln('treti mocnina cisel je: ');
  NactiVstupOdUzivatele;
  writeln('Tabulka mocnin: ');
  writeln(mocnina);
  writeln;
  writeln('Soucet celych cisel je: ',SoucetCelychCisel(n));
end.  
kozomelec
Pascal › Funkce a procedury
7. 3. 2013   #172403

Zdravím, mám problém, napsal jsem tento program a ani se mi nezkompiluje.

Kompilátor hlásí chybu: project1.lpr(15,12) Fatal: Syntax error, ";" expected but "identifier SOUCETCELYCHCISEL" found

Nevíte v čem je problém? Děkuji předem

program project1;
var n:integer;

  function mocnina: integer;
    var vysledek,poc: integer;
   begin
     poc:=1;
    while poc<=10 do
     begin
       vysledek:=poc*poc;
       vysledek:=vysledek*poc;
       poc:=poc+1;
       write(vysledek);
     end;
  function SoucetCelychCisel: integer;
     var soucet,i : integer;
       begin
        soucet:=1;
        i:=1;
        while i<=n do
         begin
           soucet:=i+soucet;
           i:=i+1;
         end;
        SoucetCelychCisel:=soucet;
      end;
procedure NactiVstupOdUzivatele;
begin
   write('Zadej cele cislo n: ') ;
   read(n);
end;

begin
  write('Tento program vam vypise tabulku tretich mocnin cisel od 1 do 10');
  write(' + soucet vsech celych cisel od 1 do zvoleneho cisla n');
  writeln('treti mocnina cisel je: ');
  NactiVstupOdUzivatele;
  write(mocnina);
  write(SoucetCelychCisel);
end.
                    

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032018 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý