Răspuns :
Prima greseala pe care ai facut-o a fost sa declari s ca fiind string,dupa care sa verifici pozitiile acelui string (caracter)?? un caracter are doar o pozitie,fiind data de valoarea pe care i-o atribui.Deci trebuie declarat un sir de caractere : CHAR s[100] (10000 sau cat vrei ).
A doua greseala e ca nu ai contorizat nivelurile.O vale/ munte poate si mai adanca/inalt de 1 pas.Ideea e ca daca ai x pasi in jos,dupa care x pasi in sus,iar ultimul pas (adica tot un s[i]) e 'U',inseamna ca ai trecut printr-o vale si poti sa continui cu contorizatul.
#include<iostream>
#include<string.h>
using namespace std;
int countingValleys(int n,char s[])
{
int nivel=0,rez=0;
for(int i=0; i<n; i++) //parcurge toti pasii
{
if(s[i]=='U')//pasi in sus
nivel++;
if(s[i]=='D')//pasi in jos
nivel--;
if(nivel==0 && s[i]=='U')//verifica daca a facut acelasi nr de pasi in jos si sus
//si daca ultimul pas e in sus,adica daca a iesit din vale
rez++;
}
return rez;
}
int main ()
{
char s[100];
int n;
cin>>s;//
n=strlen(s);//n-nr pasilor
cout<<countingValleys(n,s);
}
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Nu ezitați să ne contactați pentru orice întrebare sau dacă aveți nevoie de asistență suplimentară. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!