infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: popovici din Iunie 21, 2014, 21:18:28



Titlul: Ajutor program inserare '?' dupa fiecare aparitie a unui cuvant intrun sir
Scris de: popovici din Iunie 21, 2014, 21:18:28
Cod:
#include<iostream>
#include<fstream>
#include<string.h>
using namespace std;
void inserare(char s[100],int &n,char el,int i)//s este sirul,n lungimea,el este defapt '?' iar i pozitia pe care sa fie inserat
{
    int j;
    for(j=n;j>=i;j--)
        s[j+1]=s[j];
    s[i]='?';
    n++;


}

int main()
{
    int i,n,rez,ok=1,j,w,pi,poz;
    char s[100],v[]="aeiou",s2[16];
    cin.get(s,100);
    cin.get();
    cin.get(s2,16);
    n=strlen(s)-1;
    for(i=0;i<=n;i++)//parcurg sirul
        {
          if(s[i]==' ')//parcurg sirul pana intalnesc spatiu
          {
              poz=i-1;//poz primes i-1 pentru a merge pe ultima litera a cuvantului
              rez=1;
              for(j=pi;j<=poz;j++)//parcurg cuvantul gasit si il compar litera cu litera cu cuvantul citit de la tastatura
                for(w=0;w<strlen(s2);w++)
                 if(s[j]!=s2[w])
                    {
                       rez=0;
                       j=poz+1;//opresc parcurgerea in cazul in care gasesc un element care nu corespunde
                    }
                    ok=1;//resetez ok pentru a memora prima litera de la urmatorul cuvant
                    if(rez==1)
                    {
                        inserare(s,n,'?',i);
                        i=i+2;//stiind ca exista un singur spatiu intre fiecare cuvant sar 2 pozitii si ajung pe prima litera a cuvantului urmator
                    }
           }
          else if(ok==1)//memorez prima litera a cuvantului
          {
              pi=i;
              ok=0;
          }
        }
    for(i=0;i<=n;i++) cout<<s[i];
    return 0;
}

Niste sfaturi pentru a rezolva aceasta problema ?
Daca cuvantul citit este ana iar sirul este : ana ana ana  programul nu face nimic


Titlul: Răspuns: Ajutor program inserare '?' dupa fiecare aparitie a unui cuvant intrun sir
Scris de: Prehari Romica din Iunie 21, 2014, 23:17:12
nu faci bine compararea

Cod:
int main()
{
    int i,n,rez,ok=1,j,w,pi=0,poz;
    char s[100],v[]="aeiou",s2[16];
    cin.get(s,100);
    cin.get();
    cin.get(s2,16);
    n=strlen(s)-1;
    for(i=0;i<=n;i++)//parcurg sirul
        {
          if(s[i]!=' ')//parcurg sirul pana intalnesc spatiu
          {
              j=0;
              while(s[i]==s2[j])
              {i++;
              j++;
              }
                    if(j==strlen(s2))
                    {
                        inserare(s,n,'?',i);
                        i=i++;//stiind ca exista un singur spatiu intre fiecare cuvant sar 2 pozitii si ajung pe prima litera a cuvantului urmator
                    }
           }
          else if(ok==1)//memorez prima litera a cuvantului
          {
              pi=i;
              ok=0;
          }
        }
    for(i=0;i<=n;i++) cout<<s[i];
    return 0;
}


Titlul: Răspuns: Ajutor program inserare '?' dupa fiecare aparitie a unui cuvant intrun sir
Scris de: popovici din Iunie 22, 2014, 13:40:54
Acum mi-am dat seama ce ,,comparare ,, eronata faceam eu..multumesc de ajutor !