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 |
Problema admitere universitate
Last Updated: Dec 19 2018 12:47, Started by
f0rta
, Dec 18 2018 19:41
·
0
#1
Posted 18 December 2018 - 19:41
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 ACORDATAm 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. |
#3
Posted 18 December 2018 - 20:07
Am uitat sa-l atasez.
L-am atasat acum. 48370313_612153402555125_8664171491098624000_n.png 927.75K 50 downloads |
#4
Posted 18 December 2018 - 20:23
[ https://www.youtube-nocookie.com/embed/kzdugwr4Fgk?feature=oembed - Pentru incarcare in pagina (embed) Click aici ]
|
#5
Posted 18 December 2018 - 21:27
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
Posted 18 December 2018 - 21:31
da am vazut care este problema,
tu ai vazut abordarea si rezolvarea ? nu incape pe un rand, il muti pe urmatorul |
#7
Posted 18 December 2018 - 21:35
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
Posted 18 December 2018 - 21:41
o iei de la inceput,
afiseaza doar un rand, fara sa rupi cuvinte apoi modifici lungimea randului dupa aia modifici numarul de randuri |
#9
Posted 18 December 2018 - 21:44
Din nou, eu intrebam de ce nu-mi afiseaza nimic acel cout
|
#11
Posted 18 December 2018 - 21:59
#12
Posted 18 December 2018 - 22:02
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
Posted 19 December 2018 - 12:47
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
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users