Wątek przeniesiony 2014-12-29 19:05 z C/C++ przez ŁF.

Wskaźniki - program liczy ilość liter i cyfr

0

Mam problem z programem, dopiero zaczyna uczyc sie wkaznikow. Program ma w funkcji liczyc ilosc liter i cyfr z tekstu za pomoca wskazników. Co zrobiłem źle ?

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
 
void zlicz_wystapienia(char *s)
{
	  printf("%d",s);
      
      int i,licz,lit,inne;
 
      licz=0;
      lit=0;
      inne=0;
 
      for(i=0;i<strlen(s);i++){
      if(s[i]>='A' && s[i]<='Z' || s[i]>='a' && s[i]<='z'){
                   lit++;}}
      if(lit!=0){
                 printf("ilosc liter %d\n", lit);
                 }
      for(i=0;i<strlen(s);i++){
      if(s[i]>'0' && s[i]<='9'){
                  licz++;}}
      if(licz!=0){      
                  printf("ilosc liczb %d:\n",licz);
                  }
       for(i=0;i<strlen(s);i++){
      if(s[i]>32 && s[i]<=47){
                 inne++;}}
      if(inne!=0){      
                  printf("ilosc innych %d:\n",inne);
                  }
 
 
 

} 

int main()
{
	
	char tekst[80]="tekst123";
    char *w=&tekst[80];
	
	zlicz_wystapienia(w);
   
} 
0
  1. Nie użyłeś wskaźników
  2. Zapoznaj się z funkcjami: isdigit(), isalpha()
0

Więc jak użyć wskaźników aby było dobrze?

0

Użyj wskaźników a będzie dobrze.
Jak to zrobić pisano w byle kursie których mnóstwo znajdziesz w google.

0

Czytałem juz wiele kursów i nic, przekazac przez wartosc potrafie ale przez wskaznik mam juz problem. Prosze mi pomóc ...

0

Masz mały błąd w funkcji main. Przypisujesz do wskaźnika w &tekst[80], czyli pierwsze miejsce za tablicą tekst. Powinno być samo tekst lub &tekst[0]. Wtedy wskaźnik w będzie wskazywał na początek tekstu.

0

No dzieki, teraz działa, dołownie zmiana kilku literek.

A dragon chciał 25 zł! smiech !

A jeszcze mam jedno pytanie. Zauważyłem że niekiedy w wywołaniu funkcji w nawiasach pisze się &nazwa_wskaznika a czasami bez &

Czym to sie rozni ?

0

Nadal nie masz użytych wskaźników. & - to referencja nie z C.

0

To co musze zrobić żeby, korzystac ze wskaznikow ?

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
 
void zlicz_wystapienia(char *s)
{
	  
      
      int i,licz,lit,inne;
 
      licz=0;
      lit=0;
      inne=0;
 
      for(i=0;i<strlen(s);i++){
      if(s[i]>='A' && s[i]<='Z' || s[i]>='a' && s[i]<='z'){
                   lit++;}}
      if(lit!=0){
                 printf("ilosc liter %d\n", lit);
                 }
      for(i=0;i<strlen(s);i++){
      if(s[i]>'0' && s[i]<='9'){
                  licz++;}}
      if(licz!=0){      
                  printf("ilosc liczb %d:\n",licz);
                  }
       for(i=0;i<strlen(s);i++){
      if(s[i]>32 && s[i]<=47){
                 inne++;}}
      if(inne!=0){      
                  printf("ilosc innych %d:\n",inne);
                  }
 

} 

int main()
{
	
	char tekst[80]="tekst12345";
    char *w=&tekst[0];
	
	zlicz_wystapienia(w);
   
} 
0

Na to pytanie już dostałeś odpowiedź: http://4programmers.net/Forum/1096114

0

Czyli ze co, musze powstawiac w funkcji * przed nazwa wskaznika ? O to ci chodzi ?

0

jeżeli masz tablicę char s[256] to samo "s" jest wskaźnikiem na pierwszy element tablicy (s[0]), żeby wydobyć wartość jaka znajduje się w adresie na który wskazuję s musisz użyć operatora wyłuskania *, czyli *s ten zapis jest właśnie równoważny s[0] tablica jest ciągła, kolejny element będzie o bajt dalej (char ma rozmiar 1) czyli *(s+1), gdybyś miał int'a to nie przesuwasz o 4 (rozmiar inta), tylko 1, kompilator sam o to zadba.

0

A jeśli chciałbym dopisać jeszcze 2 parametry

void zlicz_wystapienia(char *s, int *litery, int *cyfry)

gdzie parametry litery i cyfry są wskaźnikami do tablic, w których mają zostać umieszczone wyniki zliczania, to jak to zrobić ?

dodanie znacznika <code class="c"> - @furious programming

0

Zliczać każdą literę i cyfrę osobno.

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