Jump to content
lineat

Problema Informatica

Recommended Posts

Posted

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!

Posted

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. 

  • Moderators
Posted

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.

  • Upvote 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...