[TEMA] afisare in console in forma de triunghi
Last Updated: May 22 2015 07:38, Started by
nicello
, May 21 2015 20:29
·
0
#1
Posted 21 May 2015 - 20:29
Deci, in primul rand vreau sa va urez o seara buna si sa va prezint "problemuta" mea, la care ma chinui de vreo 4 ore sa-i dau de cap, vreo 2 la scoala si 2 de cand am ajuns acasa, pe la 7 juma.
Bun deci Sa se afiseze sub forma de triunghi toate secventele mediane ale cuvantului pornind de la intregul cuvant, continuand cu cuvantul obtinut prin taierea primei si ultimei litere, apoi cu cuvantul rezultat prin eliminarea primelor si ultimelor doua litere s.a.m.d, pana la secventa alcatuita din caracterul sau cele doua caractere de mijloc. Deci: Sa afisez de exemplu INFORMATICA apoi NFORMATIC apoi FORMATI si tot asa pana la M ( litera din mijloc ). Dar sa le afisez una sub alta sub forma de triunghi... Am reusit sa fac asta doar sub forma de triunghi dreptunghic, dar imi trebuie un triunghi normal adica M sa fie in acelasi loc, nu stiu cum sa va explic daca vrea sa ma ajute cineva, as fi foarte recunoscator. O seara buna inca odata ! si multumesc. |
#2
Posted 21 May 2015 - 20:33
Pune spatii inainte de substring.
Provocarea consta in gasirea relatiei matematice dintre 1. "cate spatii trebuie afisate", 2. lungimea initiala a cuvantului, 3. lungimea substringului curent. |
#3
Posted 21 May 2015 - 20:52
Nu exista si o alta metoda mai simpla? eu ma gandeam sa inlocuiesc primul si ultimul character cu SPATIU adica ceva gen s[i]=" "; dar nu imi iese... nu reusesc s-o implementez. Sau sa inlocuiesc primul character cu spatiu si pe ultimul sa-l elimin.
Poti te rog sa fi mai explicit cu varianta ta? ce inseamna substring? randul urmator? Daca nu te superi, si daca nu sunt prea insistent, te rog ma ajuta foarte mult daca reusesc s-o rezolv si inteleg. Poti sa-mi arati o secventa de cod despre chestia asta? te rog, chiar si in pseudocod, il trec eu in c++, doar secventa asta, nu tot programul. Nu-mi dau seama cum as putea adauga spatii.... trebuie sa adaug asta intr-o bluca for sau while ca trebuie prima data 1 spatiu apoi 2 3 si tot asa... P.S: Sunt foarte mega ultra incepator, clasa a 10-a. P.S2: Imi cer scuze c-am incalcat vreo regula.Nu citisem regulamentul, si eram foarte grabit, pentru ca ma nenoroceste problema asta ( chiar daca o fi ea usoara ). Edited by nicello, 21 May 2015 - 20:59. |
#4
Posted 21 May 2015 - 21:04
nicello, on 21 mai 2015 - 20:52, said:
Poti te rog sa fi mai explicit cu varianta ta? ce inseamna substring? randul urmator? Analogii: Multime -> submultime. String -> substring. Acum ghici ce inseamna "substring". Nu exista alta varianta, asta e cea mai simpla. nicello, on 21 mai 2015 - 20:52, said:
Nu-mi dau seama cum as putea adauga spatii.... trebuie sa adaug asta intr-o bluca for sau while ca trebuie prima data 1 spatiu apoi 2 3 si tot asa... Limita superioara a buclei o determini cu formula matematica despre care ti-am spus. |
#5
Posted 21 May 2015 - 21:06
Ok deci... uite varianta mea, ma rog ce-am reusit sa fac pana acum. Asta a fost usor.
while(strlen(a)>0) { cout<<a; cout<<endl; strcpy(a,a+1); strcpy(a+strlen(a)-1,a+strlen(a)); } Si am reusit sa afisez un triunghi dreptunghic. Deci trebuie ca in fata acelui endl de la cout sa adaug cate un spatiu, dar nu-mi dau seama cum... Am adaugat un spatiu dupa acel endl si mi-a afisat asta, dar nu e bine..... trebuie dat fiecare rand de sub NFORMATIC mai la dreapta... dar nu stiu cum, ma gandeam sa adaug un for dupa cout<<endl si sa afisez un spatiu dar nu sunt de la cat sa inceapa for-ul si la cat sa se termine... http://postimg.org/image/yaevjcm9z/ Imi cer scuze daca sunt plictisitor . Si da stiu sunt si putin batut in cap ). Am inteles ce inseamna substring Edited by nicello, 21 May 2015 - 21:15. |
#6
Posted 21 May 2015 - 21:10
nicello, on 21 mai 2015 - 21:06, said:
Deci trebuie ca in fata acelui endl de la cout sa adaug cate un spatiu, dar nu-mi dau seama cum... |
#7
Posted 21 May 2015 - 21:29
Am reusit, multumesc .
Asta imi dadea batai de cap for (int i=1;i<=x;i++) cout<<" "; x++; Dar pana la urma mi-a iesit. Ciudat e faptul ca daca ii pun accolade cicleaza, si din cate stiam eu, are nevoie de accolade, deoarece sunt 2 instructiuni in for... Eu o puneam cu accolade... si noroc ca mi-a venit sa le sterg ). Multumesc inca odata:D P.S: Banuiesc ca, din cauza acoladelor cicleaza pentru ca x-ul merge pana la o valoare foarte mare, ca alta explicatie nu-mi gasesc... Edited by nicello, 21 May 2015 - 21:32. |
#8
Posted 22 May 2015 - 07:38
nicello, on 21 mai 2015 - 21:29, said:
Am reusit, multumesc . Asta imi dadea batai de cap for (int i=1;i<=x;i++) cout<<" "; x++; Dar pana la urma mi-a iesit. Ciudat e faptul ca daca ii pun accolade cicleaza, si din cate stiam eu, are nevoie de accolade, deoarece sunt 2 instructiuni in for... Eu o puneam cu accolade... si noroc ca mi-a venit sa le sterg ). Multumesc inca odata:D P.S: Banuiesc ca, din cauza acoladelor cicleaza pentru ca x-ul merge pana la o valoare foarte mare, ca alta explicatie nu-mi gasesc... Dupa cum ti-am spus: trebuie sa incrementezi x la sfarsitul iteratiei buclei mari. Daca tu puneai acele doua instructiuni intre bucle, fortai incrementarea sa fie in interiorul buclei mici, si astfel, bucla mica nu se mai termina niciodata - deoarece conditia era indeplinita mereu. In termeni mai alesi, tu modificai loop invariant in interiorul buclei. Ori loop invariant trebuie sa ramana invariant (adica neschimbat), ca altfel nu mai e invariant. Edited by OriginalCopy, 22 May 2015 - 07:39. |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users