ionut.hulub Posted March 30, 2012 Report Posted March 30, 2012 faceti un program care sa citeasca un sir de caractere de la tastatura de dimensiune aleatoare si apoi sa afiseze sirul in ordine inversa fara sa folositi vectori sau clasa string.ex:daca citeste sirul: "ana are mere"o sa afiseze"erem era ana" Quote
PitbullCristi Posted March 30, 2012 Report Posted March 30, 2012 Eu as zice ca se rezolva cu alocare dinamica-pointeri Quote
phreak Posted March 30, 2012 Report Posted March 30, 2012 Cred ca se referea la std::vector nu char[] dar posibil sa ma insel. Quote
Nytro Posted March 30, 2012 Report Posted March 30, 2012 (edited) Nu, intrebarea e gandita, fara vectori, pointeri sau clase (e "C" nu "C++").Raspunsurile pe PM. Edited March 30, 2012 by Nytro Quote
nedo Posted March 30, 2012 Report Posted March 30, 2012 Din cate vad eu nu spune nimic de pointer, ci doar de vector/std::string. Revin dupa masa cu o posibila rezolvare. Sper sa imi iasa Quote
cifratorul Posted March 30, 2012 Report Posted March 30, 2012 eu cred ca se gandeste la o functie recursiva care citeste un caracter Quote
cmiN Posted March 30, 2012 Report Posted March 30, 2012 Trebuie neaparat in C ca pe urma vine unu cu list<> sau mai stiu eu ce-i trece prin cap. Cred ca voia sa spuna sa faceti acest lucru fara ajutorul unei structuri de date. Ai PM 6 linii de cod . Quote
phreak Posted March 30, 2012 Report Posted March 30, 2012 Cum fara pointeri, in ce citesti? ma gandeam ca solutia ar fi sa faci seek la stdin dar e imposibil asa ceva deci singura solutie e sa citesti in ceva si tu-mi zici ca n-am voie sa folosesc nici un container in care sa citesc.PS : vectorii sunt niste pointeri Quote
cifratorul Posted March 30, 2012 Report Posted March 30, 2012 citeste_si_afiseaza_caracter(){ char c; citeste_caracter©; if (c == 13) return; else citeste_si_afiseaza_caracter(); print ©;} Quote
ionut.hulub Posted March 30, 2012 Author Report Posted March 30, 2012 problema se rezolva cu o functie recursiva de tipul:#include <stdio.h>void f(unsigned char c){ if((c = getch()) != '\n') { f(c); printf("%c", c); }}int main(){ f(0); return 0;}inafara de cei care au raspuns in topic, au mai raspuns corect Nytro si cmiN pe pm. Quote
cmiN Posted March 30, 2012 Report Posted March 30, 2012 c == 13 || c == 10Nu pe toate sistemele de operare enter returneaza \r (sau \r\n ca sa existe si \r). Quote
Nytro Posted March 30, 2012 Report Posted March 30, 2012 Ok ar fi cam asa:#include <stdio.h>void f(unsigned char c){ if(c != 0xD) { f(getch()); printf("%c", c); }}int main(){ f(getch()); return 0;}Pe Windows putea sa fie 10, dar am incercat inainte, si e 13. Quote
Nytro Posted March 30, 2012 Report Posted March 30, 2012 Pentru ca pe Windows nu o sa mearga, e if(c != '\r') Iar '\r' == 13 si '\n' == 10, e acelasi lucru. Quote
phreak Posted March 30, 2012 Report Posted March 30, 2012 Din cate-mi amintesc windows are '\r\n' nu doar '\r'P.S : mie mi-a mers ok folosind mingw 4.4 Quote
cmiN Posted March 30, 2012 Report Posted March 30, 2012 Omg )) daca gasesti caracterul ca fiind \n sau \r gata te-ai oprit ca indiferent ce face enter si pe ce sistem de operare esti tot primesti unul sau o combinatie din ele. Cata paguba. Quote
phreak Posted March 30, 2012 Report Posted March 30, 2012 salvezi o instructiune asm, nu te intereseaza eficienta? Quote