Wątek przeniesiony 2015-05-06 18:56 z C/C++ przez ŁF.

Zliczanie takich samych liter.

0

Witam, meczylem sie dosc sporo ale nie daje rady wiec przychodze o rade, chodzi o to, ze wproawdzamy do programu slowo, i jesli w tym slowie wystapi 2 razy z rzedu ta sama litera to wypisujemy ja 2 razy normalnie ale jak wystapi wiecej niz 2 razy, to wypisujemy litere i liczbe jej wystapien, przyklad wejscia i wyjscia:

Dla danych wejściowych:

4
OPSS
ABCDEF
ABBCCCDDDDEEEEEFGGHIIJKKKL
AAAAAAAAAABBBBBBBBBBBBBBBB

prawidłowym rozwiązaniem jest:

OPSS
ABCDEF
ABBC3D4E5FGGHIIJK3L
A10B16

I moj kod robi to ale tylko przy niektorych krotszych wyrazach ale z tymi z przykladu sobie nie radzi:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void){

  int t=0,x=0,j=1;
  char a=0;
  char tab[100];
  printf("give me a word: \n");
  printf("; ");
  scanf("%s", tab);
  x=strlen(tab);
  for(int i=0;i<x;++i){

    if(tab[i]==a){
      ++j;
    }
    	 if(j>2){
	 printf("%i", j);
	 j=1;
	 ++i;
	 }
	 if(tab[i] !=a || tab[i+1] !=a){
    	 printf("%c", tab[i]);
	 a=tab[i];
	 }
  }
return 0;
}
0

Okej, jakie wyniki dały scenariusze testów jednostkowych?

0

Okej wszystko poprawilem juz, niepotrzebnie pisalem, sorki ;p
poprawiony wyglada tak

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void){

  int t=0,x=0,j=1;
  char a=0;
  char tab[100];
  printf("; ");
  scanf("%i", &t);
  for(int i=0;i<t;++i){
  printf("; ");
  scanf("%s", tab);
  x=strlen(tab);
  for(int i=0;i<x;++i){
    if(tab[i]==a){
      ++j;
    }
    if(j>2 && tab[i+1] !=a){
      printf("%i", j);
      ++i;
      j=1;
    }
    if(tab[i] !=a || tab[i+1] !=a){
      if(j=2){j=1;}
      printf("%c", tab[i]);
      a=tab[i];
    }
  }
  printf("\n");
  } 
  return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1