Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Ajutor program inserare '?' dupa fiecare aparitie a unui cuvant intrun sir  (Citit de 2295 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
adiady95
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« : 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
Memorat
romyk
Strain
*

Karma: 5
Deconectat Deconectat

Mesaje: 40



Vezi Profilul
« Răspunde #1 : 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;
}
Memorat
adiady95
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« Răspunde #2 : Iunie 22, 2014, 13:40:54 »

Acum mi-am dat seama ce ,,comparare ,, eronata faceam eu..multumesc de ajutor !
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines