Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Ce tip de monitor am nevoie pt of...

Resoftare camera supraveghere

Cu ce va aparati de cainii agresi...

Nu imi platiti coletul cu cardul ...
 Mi-au disparut amigdalitele ?

Exista vreun plan de terorizare p...

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...
 

Problema admitere universitate

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

#1
f0rta

f0rta

    Junior Member

  • Grup: Junior Members
  • Posts: 33
  • Înscris: 08.07.2018
Salut,
Am dat peste o problema de la admitere de la universitate. M-am decis s-o incerc :))
Problema este ca in loc de output-ul din screenshot, primesc asta:
PROBLEMA DE LA EXAMEN
NU MI SE PARE FOARTE
GREU DE REZOLVAT IN TIMPUL
ACORDAT

Am atasat rezolvarea.
Asa am facut-o:
#include "stdafx.h"
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
int L, s = 0;
cin >> L;
char carac[10000];
char *p;
cin.get();
cin.get(carac, 9999);
cin.get();
p = strtok(carac, " ");
int x = strlen(p);
if (x < L)
{
  x += 1;
}
s += x;
while (p != NULL)
{
  if (s > L)
  {
   s = 0;
   cout << endl;
  }
  cout << p << " ";
  p = strtok(NULL, " ");
  x = strlen(p);
  if (x < L)
  {
   x += 1;
  }
  s += x;
}
}

Pt ca din cauza strtok pierd spatiile, in cazul in care cuvantul este mai mic decat tot randul inseamna ca avem spatiu acolo si ca trebuie sa adaug 1 la strlen. Cred ca e ceva gresit cu ordinea instructiunilor in while, dar ideea e buna.
Nu pot sa-mi dau seama cum sa-l fac sa functioneze.

#2
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,441
  • Înscris: 10.08.2005
care screenshot ?

#3
f0rta

f0rta

    Junior Member

  • Grup: Junior Members
  • Posts: 33
  • Înscris: 08.07.2018
Am uitat sa-l atasez.
L-am atasat acum.
Attached File  48370313_612153402555125_8664171491098624000_n.png   927.75K   50 downloads

#4
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,441
  • Înscris: 10.08.2005
[ https://www.youtube-nocookie.com/embed/kzdugwr4Fgk?feature=oembed - Pentru incarcare in pagina (embed) Click aici ]

#5
f0rta

f0rta

    Junior Member

  • Grup: Junior Members
  • Posts: 33
  • Înscris: 08.07.2018
Se cite¸ste un num˘ar natural L (20 ≤ L ≤ 1000) ¸si un ¸sir de cel mult 10000 de caractere ce
cont¸ine cuvinte desp˘art¸ite ˆıntre ele prin cˆate un spat¸iu. Fiecare cuvˆant din ¸sirul de caractere
citit este format din cel mult L litere mari ale alfabetului englez. S˘a se scrie un program care
afi¸seaz˘a aceste cuvinte, ˆın ordinea ˆın care se citesc, pe linii de cel mult L caractere, astfel ˆıncˆat
orice linie ˆıncepe ¸si se termin˘a cu un cuvˆant ¸si oricare dou˘a cuvinte de pe aceea¸si linie sunt
separate printr-un singur spat¸iu. Oricare linie este folosit˘a la maxim, adic˘a dac˘a un cuvˆant
are loc pe acea linie va fi pus acolo ¸si nu va fi trecut pe linia urm˘atoare sau spart pe 2 linii.
Exemplu: se cite¸ste L = 22 ¸si ¸sirul de caractere PROBLEMA DE LA EXAMEN NU MI SE PARE
FOARTE GREU DE REZOLVAT IN TIMPUL ACORDAT. Programul va afi¸sa:
PROBLEMA DE LA EXAMEN
NU MI SE PARE FOARTE
GREU DE REZOLVAT



#6
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,441
  • Înscris: 10.08.2005
da am vazut care este problema,
tu ai vazut abordarea si rezolvarea ?

nu incape pe un rand, il muti pe urmatorul

#7
f0rta

f0rta

    Junior Member

  • Grup: Junior Members
  • Posts: 33
  • Înscris: 08.07.2018
Am crezut ca e altceva link-ul ala, nu problema :))
O sa ma uit pe el, dar momentan problema mea este de ce nu-mi afiseaza nimic programul meu?

#8
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,441
  • Înscris: 10.08.2005
o iei de la inceput,
afiseaza doar un rand, fara sa rupi cuvinte
apoi modifici lungimea randului
dupa aia modifici numarul de randuri

#9
f0rta

f0rta

    Junior Member

  • Grup: Junior Members
  • Posts: 33
  • Înscris: 08.07.2018
Din nou, eu intrebam de ce nu-mi afiseaza nimic acel cout

#10
cspot

cspot

    Guru Member

  • Grup: Senior Members
  • Posts: 12,855
  • Înscris: 22.07.2004
Incepe cu un program te tip "hello world"


#11
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,441
  • Înscris: 10.08.2005

View Postf0rta, on 18 decembrie 2018 - 21:44, said:

Din nou, eu intrebam de ce nu-mi afiseaza nimic acel cout
si atunci asta cine ti-a afisat-o ?

Quote

PROBLEMA DE LA EXAMEN
NU MI SE PARE FOARTE
GREU DE REZOLVAT IN TIMPUL
ACORDAT


#12
f0rta

f0rta

    Junior Member

  • Grup: Junior Members
  • Posts: 33
  • Înscris: 08.07.2018
Aveam o alta problema care nu-mi afisa nimic. Le incurcasem, nu mai stiam pe care o postasem.
Scuze.
O sa ma uit pe linkul pe care mi l-ai dat.
Mersi.

#13
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,236
  • Înscris: 24.02.2007
Ce problema frumoasa, mai ales ca se intalneste (cu mici schimbari) in mai toate editoarele text sub numele de word wrap.

Solutia insa e mult mai simpla decat ce s-a scris in primul post. Nu e nevoie nici de strtok sau strlen.

Pur si simplu iteram prin sir si inlocuim unele spatii cu separatoare de rand nou. Cum aflam doar "cand e prea tarziu" ca un rand a devenit prea lung, dam putin inapoi si efectuam schimbarea.

#include <iostream>

void wordWrap(const char* input, const int maxLength, char* output)
{
	int mostRecentSpace = -1, currentRowStart = 0, i;

	for (i = 0; input[i]; ++i) //ca orice string C-style, va avea un 0 la final pentru a stii cand se termina
	{
		output[i] = input[i];
		if (input[i] == ' ') //am gasit un spatiu
		{
			if (mostRecentSpace >= 0) //sarim peste primul spatiu
			{
				if ((i - currentRowStart) > maxLength)
				{
					//am depasit lungimea maxima, asa ca cel mai recent cuvant trebuie trecut pe randul urmator
					output[mostRecentSpace] = '\n';
					currentRowStart = mostRecentSpace + 1;
				}
			}
			mostRecentSpace = i;
		}
	}
	if ((i - currentRowStart) > maxLength)
	{
		//poate ultimul spatiu trebuie si el inlocuit
		output[mostRecentSpace] = '\n';
	}
	output[i] = 0; //marcam finalul sirului rezultat
}

int main()
{
	const char* input = "PROBLEMA DE LA EXAMEN NU MI SE PARE FOARTE GREU DE REZOLVAT IN TIMPUL ACORDAT";
	char output[10000 + 1];

	wordWrap(input, 22, output);
	std::cout << output << std::endl;
}


Quote

PROBLEMA DE LA EXAMEN
NU MI SE PARE FOARTE
GREU DE REZOLVAT IN
TIMPUL ACORDAT

Codul de mai sus nu trateaza urmatoarele cazuri: spatii la inceputul/finalul sirului respectiv spatii consecutive.

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