Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Schimbare adresa DNS IPv4 pe rout...

Recomandare Barebone

Monede JO 2024

Suprasolicitare sistem electric
 CIV auto import

Mutare in MOZAMBIC - pareri, expe...

Scoatere antifurt airtag de pe ha...

Magnet in loc de clește pent...
 Cumparat/Locuit in apartament si ...

Pot folosi sistemul PC pe post de...

Sokol cu distorsiuni de cross-over

Filtru apa potabila cu osmoza inv...
 Kanal D va difuza serialul “...

Upgrade xiaomi mi11

securitate - acum se dau drept - ...

Farmacia Dr Max - Pareri / Sugest...
 

[Tema] Creare propozitii cu cuvintele dintr-un sir

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

#1
1marius1

1marius1

    Member

  • Grup: Members
  • Posts: 587
  • Înscris: 29.03.2012
Salut!
Am urmatoarea problema de rezolvat:
[ https://i.imgur.com/YpjNq5B.jpg - Pentru incarcare in pagina (embed) Click aici ]

Am incercat sa o rezolv, dar nu reusesc sa separ cuvintele si sa le pun intr-o matrice de cuvinte...
Ceva sugestii?

#2
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,236
  • Înscris: 24.02.2007
Incepe cu o subproblema, o functie de forma
std::vector<std::string> splitWords(std::string sentence)



#3
sftpdt

sftpdt

    Senior Member

  • Grup: Senior Members
  • Posts: 3,664
  • Înscris: 29.08.2013

View Postdani.user, on 22 iulie 2016 - 20:01, said:

Incepe cu o subproblema, o functie de forma
std::vector<std::string> splitWords(std::string sentence)

Merge cu asta acolo la admitere ia 2 instant Posted Image
Cuvintele le poţi separa cu strtok.
Iar ca să prelucrezi un cuvânt anume, poţi folosi:

int lungime = strlen(cuvant);
char tip_cuvant = cuvant[lungime - 1]; // 'S', 'P', 'C'
cuvant[lungime - 2] = '\0'; // elimini ultimele 2 caractere care nu te intereseaza
						 // (#S / #P / #C)


Edited by sftpdt, 22 July 2016 - 20:26.


#4
Mosotti

Mosotti

    Geniu umil

  • Grup: Senior Members
  • Posts: 33,295
  • Înscris: 21.04.2004
In primul rind trebuie stabilit limbajul, pentru ca C/C++ nu e un limbaj, desi se pare ca profii de info incacred asta. Si cred ca nici o fractzie. Poate o frectie.

Adevarul este ca daca se stabileste ca e C++, atunci nu probabil ca nu vrea sa foloseasca stringuri C si strtok... Eventual printf...

#5
1marius1

1marius1

    Member

  • Grup: Members
  • Posts: 587
  • Înscris: 29.03.2012
Am facut asa ceva:
#include <iostream>
#include <string.h>
using namespace std;
main()
{
char sir[100],*pointer,tip_cuvant,cuv[100][100],s[100][100],p[100][100],c[100][100];
int i,j,k,n=0,lungime,ns=0,np=0,nc=0;

cin.get(sir,100);

pointer=sir;
strtok(pointer," ");
while(pointer)
{
  strcpy(cuv[n++],pointer);
  pointer=strtok(NULL," ");
}

for(i=0;i<n;i++)
{
  lungime=strlen(cuv[i]);
  tip_cuvant=cuv[i][lungime-1];
  if(tip_cuvant=='S')
  {
   cuv[i][lungime-2]='\0';
   strcpy(s[ns++],cuv[i]);
  }
  else
  if(tip_cuvant=='P')
  {
   cuv[i][lungime-2]='\0';
   strcpy(p[np++],cuv[i]);
  }
  else
  if(tip_cuvant=='C')
  {
   cuv[i][lungime-2]='\0';
   strcpy(c[nc++],cuv[i]);
  } 
}

for(i=0;i<ns;i++)
for(j=np-1;j>=0;j--)
{
  for(k=0;k<nc;k++)
  cout<<s[i]<<" "<<p[j]<<" "<<c[k];
  cout<<endl;
}


}


E corect? Afiseaza ce trebuie! Se mai poate optimiza?

Edited by 1marius1, 22 July 2016 - 22:19.


#6
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,236
  • Înscris: 24.02.2007
Desigur. Din 2 randuri poti face toata imparteala cuvintelor in diversele categorii.
C++ nu inseamna doar cin/cout si operatii cu vectori de caractere. Alea se fac la inceput cand inveti ce sunt, nu se repeta la infinit pentru orice solutie. Chiar si biblioteca sa standard e mult mai vasta decat cea a C-ului.

Attached File  Untitled.png   18.5K   22 downloads

Desigur, multi vor zice ca nu ai ce cauta la admitere cu o astfel de solutie. Dar viata profesionala nu se rezuma doar la o admitere.

Edited by dani.user, 22 July 2016 - 22:33.


#7
1marius1

1marius1

    Member

  • Grup: Members
  • Posts: 587
  • Înscris: 29.03.2012

View Postdani.user, on 22 iulie 2016 - 22:31, said:

Desigur. Din 2 randuri poti face toata imparteala cuvintelor in diversele categorii.
C++ nu inseamna doar cin/cout si operatii cu vectori de caractere. Alea se fac la inceput cand inveti ce sunt, nu se repeta la infinit pentru orice solutie. Chiar si biblioteca sa standard e mult mai vasta decat cea a C-ului.

Attachment Untitled.png

Desigur, multi vor zice ca nu ai ce cauta la admitere cu o astfel de solutie. Dar viata profesionala nu se rezuma doar la o admitere.

Nu prea inteleg din ce ai facut tu acolo... Nu am folosit niciodata bibliotecile alea: boost, map... Nu am invat despre asa ceva, deci nu prea am de unde sa stiu, avand in vedere ca am fost la profil mate-info neintensiv.

#8
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,236
  • Înscris: 24.02.2007
Stai linistit ca nu le preda nimeni in scoala nici la intensiv.

Ti-am aratat codul pentru a-ti stani curiozitatea.

#9
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View Post1marius1, on 23 iulie 2016 - 06:36, said:


Nu prea inteleg din ce ai facut tu acolo... Nu am folosit niciodata bibliotecile alea: boost, map... Nu am invat despre asa ceva, deci nu prea am de unde sa stiu, avand in vedere ca am fost la profil mate-info neintensiv.
Stii cum face strutul?

Auzi acum. Si mort de curiozitate cum esti, te documentezi.

Nu ca "nu am auzit, nu stiu, deci nu folosesc".

#10
sftpdt

sftpdt

    Senior Member

  • Grup: Senior Members
  • Posts: 3,664
  • Înscris: 29.08.2013
if(tip_cuvant=='S')
{
	cuv[i][lungime-2]='\0';
	strcpy(s[ns++],cuv[i]);
}
else if(tip_cuvant=='P')
{
	cuv[i][lungime-2]='\0';
	strcpy(p[np++],cuv[i]);
}
else if(tip_cuvant=='C')
{
	cuv[i][lungime-2]='\0';
	strcpy(c[nc++],cuv[i]);
}


cuv[i][lungime-2]='\0';
if(tip_cuvant=='S')
	strcpy(s[ns++],cuv[i]);
else
	if(tip_cuvant=='P')
		strcpy(p[np++],cuv[i]);
	else
		strcpy(c[nc++],cuv[i]);



Anunturi

Neurochirurgie minim invazivă Neurochirurgie minim invazivă

"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv.

Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice.

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