Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cost abonament clinica privata

Tremura toata, dar nu de la ro...

Renault Android

Recomandare bicicleta e-bike 20&#...
 Bing-Content removal tool

Nu pot accesa monitorulsv.ro de l...

Cum sa elimini urmele de acnee?

Wc Geberit
 Routere detinute in trecut si in ...

Teii din fața casei

E-Mail in serie prin Excel si Out...

Modul alimentare rulou/jaluzea ex...
 Recuperare fișiere dupa form...

Aplicatii stress test RAM

Asigurare auto hibrid

Asus B550M - PC-ul nu porneste di...
 

prbleme pascal

- - - - -
  • Please log in to reply
28 replies to this topic

#1
boond

boond

    New Member

  • Grup: Junior Members
  • Posts: 11
  • Înscris: 13.12.2016
Am nevoie de ajutor. Nu inteleg cum se fac problemele de acest gen.
De la tastaturã se introduce un text.Elaborați un program care va afișa pe ecran lungimea celui mai lung cuvînt.

#2
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,570
  • Înscris: 30.07.2003
Stii sa citesti textul intr-o variabila? Stii sa parcurgi pe litere tot textul? Stii care-i spatiul? Numara.

#3
boond

boond

    New Member

  • Grup: Junior Members
  • Posts: 11
  • Înscris: 13.12.2016
var s: string;
x: integer
begin
writeln('dati textul:');
readln(s);
x:=length(s);
asa ceva?
dar cu spatiul nu inteleg cum sal numarPosted Image

Edited by boond, 13 December 2016 - 08:15.


#4
csgabe

csgabe

    Active Member

  • Grup: Members
  • Posts: 1,521
  • Înscris: 08.12.2009
Trebuie sa desparti textul in cuvinte iar delimitatorul este spatiul.

#5
boond

boond

    New Member

  • Grup: Junior Members
  • Posts: 11
  • Înscris: 13.12.2016
imi puteti da un exemplu cam cum se face va rog mult
Iata ce am facut eu

Program sir;
var s: string;
  k,x,j,i: integer;
begin
writeln('dati textul:');
readln(s);
x:=length(s);
j:=0
for i:=1 to x do
if (s[i]<>' ') then j:=j+1
else j:=0;
k:=j;
if k>j then writeln('Cel mai lung cuvint ',k)
   else writeln('cel mai lung cuvint',j);
end.

Edited by boond, 13 December 2016 - 11:07.


#6
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,570
  • Înscris: 30.07.2003
Avand sirul in variabila s, poti sa vezi/testezi pe fiecare caracter din string (adica pe s[indice]). Cum vad ca ai aflat si lungimea textului cu pricina atunci cu un for poti parcurge tot textul, caracter cu caracter si vezi din cuvinte e mai lung. Spatiul e caracterul intre apostrof (' '), acesta (pe langa alte semne ortografice) iti spune ca s-a terminat un cuvant din text.

Edited by neagu_laurentiu, 13 December 2016 - 11:03.


#7
boond

boond

    New Member

  • Grup: Junior Members
  • Posts: 11
  • Înscris: 13.12.2016
eu mai sus am scris programul imi arati ce am gresit te rog

#8
vladdy99

vladdy99

    Senior Member

  • Grup: Senior Members
  • Posts: 3,034
  • Înscris: 03.05.2006
@neagu_laurentiu: Jos palaria pentru rabdarea de a explica!

@boond: Nu iti face nimeni temele. Ai primit o explicatie cat se poate de clara! Parcurgi textul s caracter cu caracter (intr-o structura repetitiva) si compari fiecare dintre caractere cu spatiul.
Alternativ poti compara codul ascii al fiecarui caracter cu codul ascii(32) pt spatiu.

Edited by vladdy99, 13 December 2016 - 11:40.


#9
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,570
  • Înscris: 30.07.2003
Pune begin si end la blocul din for si if sa vezi si tu mai clar ce se executa, lasa acum ca stie el o line sau nu. Si ai sa vezi unde gresesti ori ce mai trebuie. Nu uita ca lugimea maxima poate fi pe la jumatatea propozitiei, asa ca testeaza pe j curent cu o lugime pastrata anterior ca fiind maxima (k sa zicem) si mai suprascrii doar daca ai o lugime mai mare.

Edited by neagu_laurentiu, 13 December 2016 - 11:35.


#10
boond

boond

    New Member

  • Grup: Junior Members
  • Posts: 11
  • Înscris: 13.12.2016
Program sir;
var s: string;
  k,x,j,i: integer;
begin
writeln('dati textul:');
readln(s);
x:=length(s);
j:=0;
begin
for i:=1 to x do
if (s[i]<>' ') then j:=j+1
else j:=0;
end;
k:=j;
if k>j then writeln('Cel mai lung cuvint ',k)
   else writeln('cel mai lung cuvint',j);
end.

eu va multumesc mult pentru rabdare si intelegere dar vreau si eu sa inteleg aceste tipuri de probleme

#11
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,570
  • Înscris: 30.07.2003
Pai inainte de for l-ai pus fara sa analizezi prea mult daca-i util ori nu! Delimiteaza for-ul si if-ul, corespunzator, nu ca acum.

#12
boond

boond

    New Member

  • Grup: Junior Members
  • Posts: 11
  • Înscris: 13.12.2016
vladdy99 eu nu vreau sa imi faca cineva temele eu vreau sa inteleg ce fac si cum fac

iti multumesc pentru rabdare dar nu inteleg cum sa delimitez for -ul si if-ul

#13
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,570
  • Înscris: 30.07.2003
Vezi in documentatia limbajului cand nu stii ceva
if boolean_condition then
begin
  statement_one;
  statement_two;
end
else
begin
  statement_three;
  statement_four;
end;

#14
boond

boond

    New Member

  • Grup: Junior Members
  • Posts: 11
  • Înscris: 13.12.2016
Program sir;
var s: string;
  k,x,j,i: integer;
begin
writeln('dati textul:');
readln(s);
x:=length(s);
j:=0
for i:=1 to x do
if (s[i]<>' ') then
  begin
       j:=j+1;
       k:=j;
   end
else
    begin
    j:=0;
    end;
if k>j then writeln('Cel mai lung cuvint ',k)
   else writeln('cel mai lung cuvint',j);
end.

din cite inteleg eu o careva conditie la esle trebuie sa dau dar nu o inteleg care

Edited by boond, 13 December 2016 - 12:02.


#15
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,570
  • Înscris: 30.07.2003
Pune si la for, sa stii mai clar (tu, calculatorul stie) de unde si pana unde tine.

k-ul ala din if e scris de fiecare data, nu pastrezi in el maximul. Pune o conditie, testeaza cand se termina cuvantul.

#16
boond

boond

    New Member

  • Grup: Junior Members
  • Posts: 11
  • Înscris: 13.12.2016
nu intelegPosted Image

#17
rickysyv

rickysyv

    Senior Member

  • Grup: Senior Members
  • Posts: 2,620
  • Înscris: 08.03.2008
Salvezi lungimea cuvântului in k doar dacă e mai mare decât cea salvată anterior. Mai simplu de atât nu se poate explica. Dacă nici așa nu înțelegi atunci nu-ți mai bate capul, oricum vei lua un 5 de trecere, nu ramâne nimeni repetent pentru Pascal...

#18
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,570
  • Înscris: 30.07.2003
for ...
begin
...
end;

Iar ca sa intelegi logica de acolo, ruleaza in minte linie cu linie, pune pe hartie valorile fiecarei variabile la ficare pas, analizeaza, trage concluzii si corectezi codul. Sau intreaba exact ce nu stii la pasul cutare, cand ai valorile cutare etc. Ideea e ca tu sa intelegi, nu sa-ti dam codul cap coada si maine ai uitat totul!

Edited by neagu_laurentiu, 13 December 2016 - 12:38.


Anunturi

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate