Informatică, întrebare adresată de sheldinminecraft, 8 ani în urmă

Ajutați-mă vă rog.În C++

Anexe:

Răspunsuri la întrebare

Răspuns de boiustef
1

#include <iostream>

#include <fstream>

#include <cstring>

using namespace std;

ifstream f("var17.in");

ofstream g("var17.out");

char s[256];

int i;

void inversare(char s[])

{ int i,j;

 char c;

 for(i=0,j=strlen(s)-1;i<j;i++,j--)

   c=s[i], s[i]=s[j], s[j]=c;

}

int main()

{

   for (i=1; i<=3; ++i)

   {

       f.getline(s,256);

       inversare(s);

       g << s << "\n";

   }

}


sheldinminecraft: Mulțumesc
boiustef: cu plăcere
sheldinminecraft: Boiustef poți să-mi explici ce ai făcut ,sunt nişte lucruri care nu le înțeleg,de exemplu primul for ce face şi cum
boiustef: void inversare(char s[])

{ int i,j;

char c;

for(i=0,j=strlen(s)-1;i < j ;i++,j--)

c=s[i], s[i]=s[j], s[j]=c;

}
boiustef: Cred te referi aici... Se face o parcurgere a sirului s cu doi indici, i parcurge de la stânga la dreapta luînd valorile 0,1,2,.. iar j parcuge de la celălalt capăt al şirului spre stînga luând valorile strlen(s)-1 , unde i creşte iar j descreşte. Şi în ciclu se face o interschimbare a caracterelor s[i] cu s[j] folosind variabila auxiliara c.
boiustef: Dacă observi tripletul de instrucţiuni sunt despărţite prin virgulă şi nu punct şi virgulă ce se permite. Tu poţi folosi şi astfel:
for(i=0,j=strlen(s)-1;i < j ;i++,j--)
{ c=s[i]; s[i]=s[j]; s[j]=c; }
boiustef: vezi, le-am luat în acolade şi am pus după fiecare punct şi virgulă.
Indicii i şi j se vor se vor întîlni la mijloc şi asfel caracterele egal de părtate de capete se vor interschimba şi ciclul for îşi va opri activitatea când nu mai va fi adevărat i < j.
sheldinminecraft: Multumesc mult
Alte întrebări interesante