Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Putin ajutor... :)  (Citit de 1745 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
mircea_mihai_94
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 2



Vezi Profilul
« : Decembrie 11, 2011, 01:06:53 »

Buna seara tuturor. Incerc sa fac problema urmatoare: Se citeste de la tastatura un text format din mai multe propozitii. Sa se afiseze numarul de propozitii, propozitia cu cele mai multe cuvinte, propozitia cu cele mai putine cuvinte, propozitia cu cele mai multe caractere, propozitia cu cele mai putine caractere.

Am facut codul de mai jos dar nu inteleg ce nu merge... O sa vi se para unele chestii ciudate pentru ca am incercat toate metodele dar tot nu reusesc. Nu primesc erori dar nu ruleaza (Terminated with code - blabla). De asemenea am un prof idiot care mi-a cerut sa fac si un GUI simplu (o fereastra cu un spatiu unde sa scriu problema, un spatiu de unde sa citesc datele si altele pentru afisari). Problema e ca habar nu am cum. Daca m-ar putea ajuta cineva si cu partea asta as ramane vesnic dator Smile.

Cod:
#include<iostream.h>
#include<string.h>
#include<conio.h>
#define subp ".?!"
#define Nmax 10000
using namespace std;
char v[Nmax],maxs[Nmax],mins[Nmax];
int main()
   {int nr=0,spatii,max=-1,min=Nmax+1,nrmin=Nmax+1,comp; int nrmax=0;
    cout<<"Textul:"; cin.get(v,Nmax);
    char  *p=strtok(v,subp),*q,*propcrmin,*propcrmax;
    while(p)
         {spatii=0;
          nr++;
 comp=strlen(p);
 if(comp<nrmin){nrmin=comp; strcpy(propcrmin,p);}
 if(comp>nrmax){nrmax=comp; strcpy(propcrmax,p);}
          q=strchr(p,' ');
          while(q)
               {spatii++;
                q=strchr(q+1,' ');
               }
          if(spatii>max)
            {max=spatii;
             strcpy(maxs,p);
            }
            else if(spatii<min) {min=spatii; strcpy(mins,p);}
          p=strtok(NULL,subp);
         }
    cout<<"\nNumarul de propozitii: "<<nr<<"\nPropozitia cu cele mai putine cuvinte: "<<mins;
    cout<<"\nPropozitia cu cele mai multe cuvinte: "<<maxs;
cout<<"\nPropozitia cu cele mai putine caractere: "<<propcrmin;
cout<<"\nPropozitia cu cele mai multe caractere: "<<propcrmax;
return 0;
   }

Editat de admin: Foloseste tagul "code" atunci cand postezi surse.
« Ultima modificare: Decembrie 11, 2011, 11:30:24 de către Andrei Grigorean » Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #1 : Decembrie 11, 2011, 17:01:33 »

Windows sau Linux ?
Memorat
mircea_mihai_94
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 2



Vezi Profilul
« Răspunde #2 : Decembrie 11, 2011, 23:42:17 »

Windows.
Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #3 : Decembrie 12, 2011, 14:24:30 »

Uite-te pe Visual Studio.
Memorat
S7012MY
Nu mai tace
*****

Karma: 26
Deconectat Deconectat

Mesaje: 648



Vezi Profilul
« Răspunde #4 : Decembrie 12, 2011, 15:17:35 »

Daca tot ai un prof care face pe desteptul si iti cere sa-i faci un gui, spune-i ca nu prea stii cum si sa te ajute el Smile . In locul tau nu m-as complica cu strtok. Eu as parcurge sirul si pentru fiecare punct as actualiza propozitiile iar numarul de cuvinte le-as actualiza la fiecare caracter care nu e litera.
Memorat
MoroJr
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 8



Vezi Profilul
« Răspunde #5 : Decembrie 23, 2011, 16:43:46 »

Cod:
#include <iostream>
using namespace std;

#define CUV (0)
#define CARAC (1)

int P[2][500], x(0);

void MAX_MIN_CUVINTE()
{
int maxcuv, mincuv, k[2] = {0, 0};
maxcuv = mincuv = P[CUV][0];
for(int i = 1; i < x; i++)
{
if(P[CUV][i] > maxcuv)
{
maxcuv = P[CUV][i];
k[0] = i;
}

if(P[CUV][i] < mincuv)
{
mincuv = P[CUV][i];
k[1] = i;
}
}
cout << "Propozitia cu cele mai multe cuvinte este propozitia " << ++k[0] << ", care contine " << maxcuv << (maxcuv == 1 ? (" cuvant") : (" cuvinte")) << "." << endl;
cout << "Propozitia cu cele mai putine cuvinte este propozitia " << ++k[1] << ", care contine " << mincuv << (mincuv == 1 ? (" cuvant") : (" cuvinte")) << "." << endl;
}

void MAX_MIN_CARAC()
{
int maxcarac, mincarac, k[2] = {0, 0};
maxcarac = mincarac = P[CARAC][0];
for(int i = 1; i < x; i++)
{
if(P[CARAC][i] > maxcarac)
{
maxcarac = P[CARAC][i];
k[0] = i;
}

if(P[CARAC][i] < mincarac)
{
mincarac = P[CARAC][i];
k[1] = i;
}
}
cout << "Propozitia cu cele mai multe caractere este propozitia " << ++k[0] << ", care contine " << maxcarac << (maxcarac == 1 ? (" caracter") : (" caractere")) << "." << endl;
cout << "Propozitia cu cele mai putine caractere este propozitia " << ++k[1] << ", care contine " << maxcarac << (mincarac == 1 ? (" caracter") : (" caractere")) << "." << endl;
}

int main()
{
int i, j, len, prop(0), k(0);
char S[1000];
cout << "Dati sirul: "; gets(S);
for(i = 0, len = strlen(S); i < len; i++)
{
if(S[i] == '.' || S[i] == '?' || S[i] == '!' || S[i+1] == NULL)
{
prop++;
for(j = k; j <= i; j++)
{
P[CARAC][x]++;
if(S[j] == ' ' || S[j+1] == NULL || S[j+1] == '.' || S[j+1] == '?' || S[j+1] == '!')
{
P[CUV][x]++;
}
}
++x;
k = i;

}
}
cout << endl << endl <<  "Numarul propozitiilor: " << prop << endl;
MAX_MIN_CUVINTE();
MAX_MIN_CARAC();

system("pause>nul");
return 0;
}

Ideea este ca propozitiile trebuie scrise cum le scrii pe caiet, nu cum scrii in word.
Exemplu bun: "Salut.Ce mai faci?Uite bine, pe acasa!Tu?Si eu la fel, multumesc."
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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