Rakstīt ziņojumu 
 
Pavediena vērtējums:
  • 1 balsis - 5 vidējais
  • 1
  • 2
  • 3
  • 4
  • 5
c++ programmas ar 'char'
Autors Ziņa
ilshe Atslēdzies
Junior Member
**

Ziņojumi: 7
Pievienojās: Apr 2010
Reputācija: 0
Ziņojums: #1
c++ programmas ar 'char'
Sveiki!
Man ir veseli 3 uzd. programmēšnā, ar ko netieku galā; it kā būtu jābūt viegli, bet esmu absolūta iesācēja!
Varbūt kāds var pateikt, kas manos mēģinājumos kko uzprogrammēt ir nepareizi? Smile

1. uzd.
Ievadīt no tastatūras teksta rindu. Nošifrēt ievadīto rindu, aizvietojot simbolus ‘a’ ar simboliem ‘b’, simbolus ‘b’ ar simboliem ‘c’ un t.t., simbolus ‘z’ ar simboliem ‘a’.

# include <conio.h>
# include <iostream>
using namespace std;
void main ()
{
char s[40];
char ch;
int i;
cout<<"ievadi rindu: ";
cin>>s;
for (i=0; i<=strlen(s); i++)
for (ch='a'; ch<='z'; ch++)
{{if s[i]==ch
s[i]=ch+1;}
{if s[i]=='z'
s[i]='a';}}
cout<<s[i];
getch();
}



2. uzd.

Ievadīt no tastatūras teksta rindu. Iestarpināt aiz katra komata tukšumzīmi.
(Te man mistiski izdodas panākt, ka komata vietā parādās smailijs. Nezinu, kpc Very Happy )

# include <conio.h>
# include <iostream>
using namespace std;
void main ()
{ char s[40];
int i;
cout<<"ievadi tekstu: ";
cin>>s;
for (i=0; i<strlen(s); i++)
{if (s[i]==',')
s[i]=','&&' ';}
cout<<s;
getch();
}

3. uzd.

Ievadīt no tastatūras teksta rindu. Pārveidot rindu tādā veidā, lai burti, kas seko aiz tukšumzīmēs būtu lielie, bet pārējie simboli būtu mazie. (Pirmajiem 2 vārdiem tos lielos burtus šitā var dabūt, bet ja vārdu ir vairāk, tad pārējie vienalga sākas ar mazo.)


# include <conio.h>
# include <iostream>
using namespace std;
void main ()
{ char s[40];
int i;
cout<<"ievadi tekstu: ";
cin>>ws;
cin.get (s, 40);
for (i=0; i<strlen(s); i++)
if (s[i]>='A' && s[i]<='Z')
s[i]=s[i]-'A'+'a';
s[0]=s[0]-'a'+'A';
{for (i=0; i<=strlen(s); i++)
{if s[i]==' '
s[i+1]=s[i+1]-'a'+'A';}}
cout<<s;
getch();
}


Cepums tam, kurš spēs mani kaut cik apgaismot par šiem uzdevumiem! Smile)
21.04.2010 20:15
Atrast visus šī lietotāja rakstītos ziņojumus Citēt šo ziņu atbildē
Ēriks Klotiņš Atslēdzies
Senior Member
****

Ziņojumi: 428
Pievienojās: May 2005
Reputācija: 4
Ziņojums: #2
RE: c++ programmas ar 'char'
1. uzdevums
Šeit jaizmanto ipašība, ka burti ASCII kodējumā atrodas pēc kārtas, katram burtam, lai dabūtu nākamo jāpieskaita 1, izņēmums ir z, jo pēc tā neseko a
tātad:
Kods:
for (i=0; i<=strlen(s); i++) if (s[i]  == 'z') { s[i] = 'a'; } else{ s[i] ++; }

2. uzdevums

rindiņa:
Kods:
s[i]=','&&' ';
noteikti nedara to ko tev vajag. && ir loģiskais UN operātors.

Tā vietā, pārstaigā visu ievadīto stringu un uzbūvē jaunu izvadei:
Kods:
char result[];
for (int i=0; i<strlen(s); i++) if (s[i] == ',')  result += ", "; else result +=s[i];

3. uzdevums

Kods:
for (int i=0; i<strlen(s);i++)
{
if ((i>0) && (c[i-1]) == ' ')&&(c[i] >='a')) // ja i-tais simbols nav pirmais un iepriekšējais bija tukšums un i-tais simbols ir mazais burts (97 ='a')
{
c[i] -= ('a' - 'A'); // uztaisam par lielo burtu
}
else if (c[i] < 97)  c[i] += ('a' - 'A'); // uztaisām par mazo burtu


}


Raksīju bez kompilēšanas, šur tur var būt kāda sintakses kļūdiņa
21.04.2010 20:43
Atrast visus šī lietotāja rakstītos ziņojumus Citēt šo ziņu atbildē
Zaķītis-Kaķītis Atslēdzies
Īsts zvērs
***

Ziņojumi: 202
Pievienojās: Feb 2009
Reputācija: 4
Ziņojums: #3
RE: c++ programmas ar 'char'
Ātrais. Laughing
21.04.2010 20:44
Atrast visus šī lietotāja rakstītos ziņojumus Citēt šo ziņu atbildē
ilshe Atslēdzies
Junior Member
**

Ziņojumi: 7
Pievienojās: Apr 2010
Reputācija: 0
Ziņojums: #4
RE: c++ programmas ar 'char'
(21.04.2010 20:43 )Ēriks Klotiņš rakstīja:  1. uzdevums
Šeit jaizmanto ipašība, ka burti ASCII kodējumā atrodas pēc kārtas, katram burtam, lai dabūtu nākamo jāpieskaita 1, izņēmums ir z, jo pēc tā neseko a
tātad:
Kods:
for (i=0; i<=strlen(s); i++) if (s[i]  == 'z') { s[i] = 'a'; } else{ s[i] ++; }

Šo izlaboju tā, kā iesaki, bet man galu galā izvada tikai kkādu mistisku bultiņu Very Happy

Līdz pārējiem vēl īsti netiku, bet anyway liels paldies! Ceru, ka man izdosies piedabūt tos darboties Very Happy
21.04.2010 21:38
Atrast visus šī lietotāja rakstītos ziņojumus Citēt šo ziņu atbildē
Zaķītis-Kaķītis Atslēdzies
Īsts zvērs
***

Ziņojumi: 202
Pievienojās: Feb 2009
Reputācija: 4
Ziņojums: #5
RE: c++ programmas ar 'char'
Kods:
for (i=0; i<=strlen(s); i++) if (s[i]  == 'z') { s[i] = 'a'; } else{ s[i] ++; }

tā mistiskā bultiņa ir liekais elements, kurš tiek apstrādāts.

i <= strlen(s)
vajag
i < strlen(s)

nu tas ja tev beigās izvada bultiņu. man tur parādījās smailijs.
(Šo ziņojumu pēdējo reizi modificēja: 21.04.2010 22:40 Zaķītis-Kaķītis.)
21.04.2010 22:40
Atrast visus šī lietotāja rakstītos ziņojumus Citēt šo ziņu atbildē
ilshe Atslēdzies
Junior Member
**

Ziņojumi: 7
Pievienojās: Apr 2010
Reputācija: 0
Ziņojums: #6
RE: c++ programmas ar 'char'
Hehē, lieliski, paldies, 1. uzd. man darbojas! Smile


Bet ir problēma ar otro... Very Happy
Izlaboju uz kko šitādu, bet man izmet, ka ir kkādi error saistībā ar result un +=. Mēs šādas darbības nodarbībās neesam izmantojuši, tāpēc nezinu, kas tur ir ne tā, kā vajag.
Kods:
# include <conio.h>
# include <iostream>
using namespace std;
void main ()
{  char s[40];
int i;
cout<<"ievadi tekstu:  ";
cin>>s;
char result[];
for (int i=0; i<strlen(s); i++)
if (s[i] == ',')  
result += ', ';
else result +=s[i];
cout<<s;
getch();
}

Un 3. izlaboju uz kko tādu, vadoties pēc vakar ieteiktā, un arī nedarbojas:

Kods:
# include <conio.h>
# include <iostream>
using namespace std;
void main ()
{  char s[40];
int i, c;
cout<<"ievadi tekstu:  ";
cin>>ws;
cin.get (s, 40);
for (int i=0; i<strlen(s);i++)
{
if ((i>0) && (c[i-1]) == ' ') && (c[i] >='a'))
{
c[i] -= ('a' - 'A');
}
else if (c[i] < 97)  c[i] += ('a' - 'A');
cout<<s;
getch();
}
22.04.2010 08:35
Atrast visus šī lietotāja rakstītos ziņojumus Citēt šo ziņu atbildē
AR Atslēdzies
Junior Member
**

Ziņojumi: 9
Pievienojās: Oct 2008
Reputācija: 1
Ziņojums: #7
RE: c++ programmas ar 'char'
(22.04.2010 08:35 )ilshe rakstīja:  Bet ir problēma ar otro... Very Happy
Izlaboju uz kko šitādu, bet man izmet, ka ir kkādi error saistībā ar result un +=. Mēs šādas darbības nodarbībās neesam izmantojuši, tāpēc nezinu, kas tur ir ne tā, kā vajag.
Kods:
# include <conio.h>
# include <iostream>
using namespace std;
void main ()
{  char s[40];
int i;
cout<<"ievadi tekstu:  ";
cin>>s;
char result[];
for (int i=0; i<strlen(s); i++)
if (s[i] == ',')  
result += ', ';
else result +=s[i];
cout<<s;
getch();
}

Ja aiz if seko viena darbība, tad protams var nelikt {}, bet ja ir vairākas darbības vai arī else daļa, tad gan iesaku likt{} - neesmu atradusi iespēju, ka iet bez {}. Resp. gan if, gan else gadījumus saliec iekavās!!!
Darbība:
a+=3 nozīmē to pašu, ko a=a+3 vari lietot jebkuru pierakstu, tas tiek izmantots tikai, lai saīsinātu pierakstu, kad pieskaiti esošajam mainīgajam kaut ko klāt, tāpat ir darbības -= *= /=
22.04.2010 13:37
Atrast visus šī lietotāja rakstītos ziņojumus Citēt šo ziņu atbildē
Zaķītis-Kaķītis Atslēdzies
Īsts zvērs
***

Ziņojumi: 202
Pievienojās: Feb 2009
Reputācija: 4
Ziņojums: #8
RE: c++ programmas ar 'char'
(22.04.2010 08:35 )ilshe rakstīja:  
Kods:
# include <conio.h>
# include <iostream>
using namespace std;
void main ()
{
char s[40];
int i;
cout<<"ievadi tekstu:  ";
cin>>s;
char result[];
for (int i=0; i<strlen(s); i++)
if (s[i] == ',')  
result += ', ';
else result +=s[i];
cout<<s;
getch();
}
mans DevCPP nemaz negrib atļaut nodefinēt tādu mainīgo result Very Happy
bet pieņemu, ka man ir līkas rokas. [pārbaudot vnk nomainīju uz string tipu]

result += ', ';
šī rindiņa arī nav īsti pareiza. Starp ' ' raksta char t.i. 1 simbolu. " " raksta stringu t.i. vairākus char simbolus
result += ", ";

programma man ar string strādā Laughing
Kods:
#include <iostream>
using namespace std;
int main ()
{
char s[40];
string result;
int i;
cout<<"Ievadi rindu: ";
cin>>s;
for (i=0; i<strlen(s); i++)
  if (s[i]  == ',') {
    result += ", ";
  } else {
    result += s[i];
  }
cout << result << endl;
system("pause");
return 0;
}
22.04.2010 15:16
Atrast visus šī lietotāja rakstītos ziņojumus Citēt šo ziņu atbildē
ilshe Atslēdzies
Junior Member
**

Ziņojumi: 7
Pievienojās: Apr 2010
Reputācija: 0
Ziņojums: #9
RE: c++ programmas ar 'char'
Labs vakars!

Kāds varētu pastāstīt, kāpēc mana programma reizēm izvada pareizu rezultātu un reizēm ne?
Uzd. ir šāds: Ievadīt teksta rindu, kas satur matemātisku izteiksmi. Pārbaudīt, vai iekavas izteiksmē ir novietotas pareizi. Izteiksmē tika lietotas tikai apaļas iekavas. Visus simbolus, kas atšķiras no iekavām, programma var ignorēt.
Piemēram, rindā: (( ))(( )( )) iekavas ir novietotas pareizi.
Bet rindā: ( ))(( ) iekavas ir novietotas nepareizi.

Kods:
# include <conio.h>
# include <iostream>
using namespace std;
void main ()
{  
char str[21];
static int A[21];
int i, a=0;
cin>>str;
for (i=0; i<strlen(str); i++)
{if(str[i]=='(')
  
{A[a]=str[i];
  a++;}

if (str[i]==')')
   {if(str[i]==')'){if (A[a-1]=='(') a--; else break;}}

}
if(a==0)cout<<"kljuudas nav";
else cout<<"ir kljuda";
getch ();
}
29.04.2010 19:11
Atrast visus šī lietotāja rakstītos ziņojumus Citēt šo ziņu atbildē
PeterB Atslēdzies
(._.)
****

Ziņojumi: 287
Pievienojās: Sep 2008
Reputācija: 10
Ziņojums: #10
RE: c++ programmas ar 'char'
(29.04.2010 19:11 )ilshe rakstīja:  
Kods:
if (str[i]==')')
   {if(str[i]==')'){...}}
WTF??


Nesaprotu, kam ir vajadzīgs A masīvs. Ciklā jāiet cauri visai simbolu virknei, ja sastop (, tad a++, ja sastop ), tad a--. Ja beigās a>0 vai jebkurā brīdī(!) a<0, tad ir kļūda. Viss.
29.04.2010 21:53
Apskatīt lietotāja interneta adresi Atrast visus šī lietotāja rakstītos ziņojumus Citēt šo ziņu atbildē
ilshe Atslēdzies
Junior Member
**

Ziņojumi: 7
Pievienojās: Apr 2010
Reputācija: 0
Ziņojums: #11
RE: c++ programmas ar 'char'
Hei!
Man ir kārtējā problēma Very Happy
Uzd. ir ievadīt rindu, kas satur matemātisku izteiksmi, kurā ir reāli skaitļi un zīmes “+” un “-“. Vajag aprēķināt izteiksmes vērtību.
Lai man vismaz kkas sanāktu, es te bik vienkāršoti mēģināju rakstīt programmu -pieņemot, ka ir tikai 1cipara skaitļi un ka pirms katra skaitļa ir "+" vai "-" (arī pirms pirmā skaitļa, ko ievada jābūt attiec. +vai - zīmei). Bēēēt - programma it kā aiziet, bet tas cipariņš, ko beigās izvada, galīgi nav tā summa, kas vajadzīga. Kāds maybe var pateikt, kas nav pareizi un kā būtu jābūt?

Kods:
#include <iostream>
using namespace std;
#include <conio.h>
#include <string.h>
void main ()
{char rinda[20];
int i, s;
s=0;
cout << "ievadi izteiksmi:   ";
cin>>rinda;
for (i=0; i<strlen(rinda); i=i+2)
if (rinda[i]=='+') s=s+(rinda[i+1]);
if (rinda[i]=='-') s=s-(rinda[i+1]);
cout<<"izteiksmes vertiba ir: "<<s;
getch();
}
05.05.2010 14:18
Atrast visus šī lietotāja rakstītos ziņojumus Citēt šo ziņu atbildē
ulzha Atslēdzies
Koto Member
****

Ziņojumi: 683
Pievienojās: May 2006
Reputācija: 16
Ziņojums: #12
RE: c++ programmas ar 'char'
Par { un } mācīja? Kā kompilators var zināt, ka tu abus ifus gribi ciklā, ja tu {} nelieto?

Rinda satur ciparus kā simbolus! Tu šobrīd skaiti attiecīgā simbola kodu, nevis pašu ciparu. Kā iegūt ciparu, izdomā http://www.asciitable.com/

Tā vietā skaitļus, arī daudzciparu, labāk būs ielasīt ar http://www.cplusplus.com/reference/iostr...ingstream/
(Šo ziņojumu pēdējo reizi modificēja: 05.05.2010 15:31 ulzha.)
05.05.2010 15:13
Atrast visus šī lietotāja rakstītos ziņojumus Citēt šo ziņu atbildē
ilshe Atslēdzies
Junior Member
**

Ziņojumi: 7
Pievienojās: Apr 2010
Reputācija: 0
Ziņojums: #13
RE: c++ programmas ar 'char'
Hej, nevajag jau uzreiz tik skarbi! Wink
Tiešām, nepamanīju, ka man trūkst {}. Un sapratu par to simbola kodu, un tgd šī programma man darbojas tā, kā biju gribējusi. Liels paldies Tev par palīdzību! Smile

(05.05.2010 15:13 )ulzha rakstīja:  Tā vietā skaitļus, arī daudzciparu, labāk būs ielasīt ar http://www.cplusplus.com/reference/iostr...ingstream/
Bet šito gan nesapratu, neesmu tik advancēta Very Happy
05.05.2010 15:51
Atrast visus šī lietotāja rakstītos ziņojumus Citēt šo ziņu atbildē
ulzha Atslēdzies
Koto Member
****

Ziņojumi: 683
Pievienojās: May 2006
Reputācija: 16
Ziņojums: #14
RE: c++ programmas ar 'char'
Es jau gribu, lai tu iemācies izmantot dokumentāciju
Piem., klikšķinot uz funkcijām, ir precīzi apraksti un ar piemēriem
Piem., iemetot Googlē istringstream, var uzzināt vēl sīkāk un 100x paskaidrotāk, nav jau vienmēr laika to visu vēl un vēlreiz rakstīt
Kods:
#include <sstream>
...
istringstream sin(rinda);
sin >> pirmais skaitlis;
while (sin >> operators >> skaitlis) ...
(Šo ziņojumu pēdējo reizi modificēja: 05.05.2010 16:32 ulzha.)
05.05.2010 16:30
Atrast visus šī lietotāja rakstītos ziņojumus Citēt šo ziņu atbildē
Rakstīt ziņojumu 


Lēciens uz forumu:



Kontaktifizmati.lvAtgriezties uz augšuAtgriezties pie saturaArhīva skatsRSS sindikācija