Problema C++
  [ Ignoră ]
Avatar
RankRankRank
Member
Din: Bucuresti / Vaslui
Macuser din: 26.06.11

Buna ziua 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 profesor 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) desi nu ne-a aratat nici odata cum. Problema e ca habar nu am cum. Daca m-ar putea ajuta cineva si cu partea asta as ramane vesnic dator smile.

#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>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<<”\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: “<

Profil
 
  [ Ignoră ]   [ # 1 ]
Avatar
RankRankRank
Member
Din: Cluj-Napoca
Macuser din: 17.09.09

Pentru GUI poți folosi orice librărie de GUI. Recomand QT (de la Nokia), care e destul de simplă/faină și straight-forward. Decât să te încurci cu GTK sau wxWidgets.

Nu știu de ce, dar parcă n-aș folosi strtok și strchr. O simplă parcurgere (liniară) ar fi enough. Ceva de genul:


char maxChar[NMax], maxWord[NMax], minChar[NMax] minWord[NMax], current[NMax];

char *p = v;
int currentCharLength, currentWordLength, maxCharLength, maxWordLength, minCharLength, minWordLength, sentenceCount;

while((*p) != 0){
  char chr = *p;
  dacă chr e semn de punctuație{
  // 1) currentCharLength > maxCharLength - setezi noul max char - strcpy(maxChar, current);
  // 2) idem pt minCharLength, minWordLength, maxWordLength
  currentCharLength = 0;
  strcpy(current, “”);
  }else {
  current[currentCharLength] = chr;
  current[currentCharLength+1] = ‘\0’; // asigurare ca ultimul element e 0 - end of ascii string
  currentCharLength ++;
  }
  p++;
}

Profil