lineat Posted November 17, 2020 Report Posted November 17, 2020 Salutari.Am si eu o problema in care trebuie sa inversez al 2 lea element dintr-un sir cu penultimul. Eu am reusit sa inversez pana acum doar penultimul element cu primul.Stie cineva cum pot sa rezolv problema asta? Mentionez ca pot folosi doar IF si WHILE,nu am voie sa folosesc functii,vectori,pointeri etc. Multumesc mult! Quote
BogdanNBV Posted November 17, 2020 Report Posted November 17, 2020 Poti da datele problemei si ce ai facut pana acum? Quote
Nytro Posted November 17, 2020 Report Posted November 17, 2020 Adica din "abcde" sa faci "adcbe"? Poti folosi strlen? Daca nu, il poti implementa cu un while: char sir[] = "abcde"; unsigned int length = 0; while(sir[length++]) {} // Cred, facut acum rapid Apoi inlocuiesc elementul 2 cu penultimul, adica: char x = sir[2]; // Temporar salvezi al doilea caracter sir[2] = sir[len-2]; // Inlocuiesti al doilea caracter cu penultimul sir[len-2 = x; // Penultimul apoi cu al doilea Nu stiu daca e exact asa sau daca de asta ai nevoie. Probabil ai nevoie si de un "if" sa vezi daca sirul are mai mult de 2 caractere. Quote
Moderators Dragos Posted November 17, 2020 Moderators Report Posted November 17, 2020 Alternativa la ce a zis @Nytro, fara o variabila in plus sir[2] = sir[len-2] + sir[2] sir[len-2] = sir[2] - sir[len-2] sir[2] = sir[2] - sir[len-2] De exemplu, pentru un sir 123456, avem valorile 2 si 5: sir[2] = sir[len-2] + sir[2] = 5+2 = 7 sir[len-2] = sir[2] - sir[len-2] = 7-5 = 2 sir[2] = sir[2] - sir[len-2] = 7-2 = 5 In anumite limbaje te lasa sa faci operatii din astea si pe siruri text, acum trebuie sa vezi daca merge. 1 Quote
lineat Posted November 19, 2020 Author Report Posted November 19, 2020 Multumesc,dar am rezolvat.Era vorba de un sir de numere,imi cer scuze ca nu am precizat. Quote