Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Stringovi kao i obično....

[es] :: C/C++ programiranje :: Stringovi kao i obično....

[ Pregleda: 2408 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Krejmer
Stefan Savić
Učenik
Rep Srpska,Gradiška

Član broj: 200438
Poruke: 19
*.teol.net.

Sajt: www.google.rs


Profil

icon Stringovi kao i obično....06.02.2011. u 15:46 - pre 160 meseci
Ljudi pomagajte razbiću ga.Dakle problem je u običnom konvertovanju velika u mala slova.Hoću da to odradim preko ASCII-a,ali C naravno mora mene da nanervira.

Ono standardno x=X+32 .

Moj kod:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string>
int main()
{
  //Uppercase-to-Lowercase letter convertor
  int num,i,c;
  char S[255];
  printf("INPUT STRING : \n");
  scanf("%s",&S);
  for (i=0;i<=strlen(S);i++);
  {
      if ((65>=(int)S[i]) && ((int)S[i]<=90)) 
      {
                      num=(int)S[i];
                      S[i]=(char)num+32;
      }
  }
  printf("\nOUTPUT STRING : \n");
  printf("%s\n",S);
  system("pause");
  return 0;                                    
}


Ako neko nije skontao,npr treba da bude :

ULAZ---------- IZLAZ:
LoPtA ---------- lopta


 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Stringovi kao i obično....06.02.2011. u 16:24 - pre 160 meseci
Za početak, na osnovu tvog primera, da ne idemo bas u najoptimalnija resenja ovog zadatka:

Code:

#include <stdio.h>
#include <stdlib.h>
#include <string> // <--- MISLIM DA NE TREBA
int main() // <--- C STANDARD KAZE int main(void)
{
  //Uppercase-to-Lowercase letter convertor
  int num,i,c; // <--- VIŠAK
  char S[255];
  printf("INPUT STRING : \n");
  scanf("%s",&S);
  for (i=0;i<=strlen(S);i++); // <--- NIKAKO TACKA-ZAREZ OVDE !!! TREBA DA IDE OD 0 do DUZINA-1,  TADA JE NAJBOLJE DA BUDE < UMESTO <=
  { // <--- NE TREBA BLOK
      if ((65>=(int)S[i]) && ((int)S[i]<=90)) // <--- NE TREBA CAST-OVANJE; BOLJE 'A' NEGO 65, BOLJE 'Z' NEGO 90
      {
                      num=(int)S[i]; // <--- NE TREBA CAST-OVANJE
                      S[i]=(char)num+32; // <--- NE TREBA CAST-OVANJE; MOZE KONVERZIJA ODJEDNOM SA PRETHODNIM IZRAZOM
      }
  }
  printf("\nOUTPUT STRING : \n");
  printf("%s\n",S);
  system("pause");
  return 0;                                    
}


// NETESTIRANO, NA OSNOVU TVOG PRIMERA
Code:

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
  //Uppercase-to-Lowercase letter convertor
  int i;
  char S[255];
  printf("INPUT STRING : \n");
  scanf("%s",&S);

  for (i=0; i<strlen(S); i++)
      if ( S[i]>='A' && S[i]<='Z')
            S[i] += 32;

  printf("\nOUTPUT STRING : \n");
  printf("%s\n",S);
  system("pause");
  return 0;
}
 
Odgovor na temu

Igor Gajic

Član broj: 93194
Poruke: 747
*.dynamic.isp.telekom.rs.



+987 Profil

icon Re: Stringovi kao i obično....06.02.2011. u 16:41 - pre 160 meseci
Zar razlika u velikim i malim slovima nije u jednom bitu. Peti bit, koliko me sluzi pamcenje. Znaci mogao bi da prodjes kroz string i uradis OR na svako slovo sa 0x20. Radi brze nego sabiranje
 
Odgovor na temu

Krejmer
Stefan Savić
Učenik
Rep Srpska,Gradiška

Član broj: 200438
Poruke: 19
*.teol.net.

Sajt: www.google.rs


Profil

icon Re: Stringovi kao i obično....06.02.2011. u 16:42 - pre 160 meseci
Hvala,uf grešku ovu kod for petlje nisam ni vidio.A i pogrešio sam kod znaka kod prvog uslova.Umor me stigao.

@Igor

Nije mi toliko sad važna brzina programa koliko ispravnost.

[Ovu poruku je menjao Krejmer dana 06.02.2011. u 20:10 GMT+1]
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Stringovi kao i obično....07.02.2011. u 09:24 - pre 160 meseci
Ispravnije bi bilo koristiti funkciju toupper. Prvo, ne bi morao da proveravaš da li je slovo malo, a drugo, tako se radi u Unicode okruženju pa valja navikavati mozak na univerzalno rešenje.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
212.200.65.*

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Stringovi kao i obično....07.02.2011. u 09:30 - pre 160 meseci
^
Slažem se... Zato i rekoh u prvoj poruci da se ne dotičem "najoptimalnijeg rešenja", već koda "as is". Ali svakako treba pomenuti i "kako treba", kada se već bavimo ovime.

btw: toupper --> tolower


Borland C++ Builder::Help::C runtime library::tolower
Code:

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

int main(void)
{
   int length, i;
   char *string = "THIS IS A STRING";

   length = strlen(string);
   for (i=0; i<length; i++)
   {
       string[i] = tolower(string[i]);
   }
   printf("%s\n",string);

   return 0;
}
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Stringovi kao i obično....07.02.2011. u 09:58 - pre 160 meseci
Ah, velika u mala... Nisam čitao.

Ali da ti se odužim, treba char string[] umesto char *string :-)
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
212.200.65.*

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Stringovi kao i obično....07.02.2011. u 10:05 - pre 160 meseci
Ma da, to je Copy/Paste prepotopskog Helpa prepotopskog kompajlera, zato sam i naveo...
 
Odgovor na temu

tkaranovic
Tomislav Karanović
Beograd

Član broj: 220507
Poruke: 307



+18 Profil

icon Re: Stringovi kao i obično....07.02.2011. u 11:20 - pre 160 meseci
Pogledao sam šta je u novijem helpu i stoji potpuno isti primer, a link help strane je:

ms-help://embarcadero.rs2010/rad/Tolower,_mbctolower,_towlower.html


Inače sam pogledao ovaj primer jer sam već ranije primetio da su neki drugi primeri ostali isti.

 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
212.200.65.*

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Stringovi kao i obično....07.02.2011. u 11:24 - pre 160 meseci
Isto:
http://docwiki.embarcadero.com.../Tolower,_mbctolower,_towlower

Inace, ko nezna, popstoji DocWiki za C++ Builder i ostale Embarcadero alate:
http://docwiki.embarcadero.com/RADStudio/en/Main_Page

 
Odgovor na temu

elektro009
ljubomir

Član broj: 181751
Poruke: 7
80.71.153.*



Profil

icon Re: Stringovi kao i obično....25.02.2011. u 14:15 - pre 160 meseci
Ev kako sam ja to uradio. I provjereno radi.
Code:

#include<stdio.h>
#include<string.h>
int uptolo(char string[])
{
    int i;
    if(!string)return 0;
    for(i=0;i<strlen(string);i++)
    {
        if(string[i]<='Z'&&string[i]>='A')
        {
            string[i]=string[i]+'a'-'A';
        }
    }
    return 1;
}
void main()
{
    char s[100];
    printf("Unesite string:\n");
    scanf("%s",s);
    uptolo(s);
    printf("%s",s);
}

1001
 
Odgovor na temu

[es] :: C/C++ programiranje :: Stringovi kao i obično....

[ Pregleda: 2408 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.