infoarena

infoarena - concursuri, probleme, evaluator, articole => Teme => Subiect creat de: Cristi din Iulie 18, 2012, 14:25:41



Titlul: Sir de caractere
Scris de: Cristi din Iulie 18, 2012, 14:25:41
Se considera un text cu maximum 255 de caractere , format din litere mici bla bla. Scrieti un program care citeste de la tastatura textul si apoi determina tranformarea acestuia , eliminand prima si ultima consoana care apare in text.
Exemplu: mare frig saci
are frig sai.

Codul :
Cod:
#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
int voc(char z)
{
    if(z!='a' || z!='e' || z!='i' || z!='u')
    return 1;
    else
    return 0;
}

int main ()
{
    char *s,*t,*u,*x;
    int i,p,j,n,q;
    cout<<"Introduceti textul:";
    gets(s);
    n=strlen(s);
    i=0;
    j=n-1;
    while(i<=n && voc(*s))
    i++;
    while(j>=0 && voc(*s))
    j--;
    if(i>n && j==-1)
    cout<<"Nu exista consoane...";
    else{
    p=i;
    q=j;
    strncpy(t,s,p);
    strncpy(x,s+p+1,q);
    u=s+q+1;
    strcat(t,x);
    strcat(t,u);
    cout<<t;
    }
    return 0;
}

Nu-mi merge , imi da stop working..


Titlul: Răspuns: Sir de caractere
Scris de: hiticasabel din Iunie 26, 2013, 11:33:11
Nu sunt sigur dar cred ca cel mai bine ar fi fost sa renunti la pointeri si sa lucrezi cu siruri :
Cod:
char s[20];
cin.getline(s, 20);


Titlul: Răspuns: Sir de caractere
Scris de: Alexandru Valeanu din Iunie 26, 2013, 22:14:57
Te complici aiurea cu toate functiile alea...din punctul mea de vedere iti trebuie doar o functie care sterge caracterul de la pozitia i: strcpy(s+i,s+i+1);
Avand functia asta trebuie doar sa faci 2 parcurgeri de la inceputul sirului si de la sfarsitul sau si cand gasesti o consoana o stergi si iesi.
Ti-am atasat programul care face asta dar incearca mai intai sa-l scrii singur si daca nu iti iese uita-te pe rezolvarea mea. Succes!

PS: nu abuza de pointeri decat daca nu ai cum scapa