Forum CDRinfo.pl

Forum CDRinfo.pl (https://forum.cdrinfo.pl/)
-   Off topic (https://forum.cdrinfo.pl/f5/)
-   -   [c++] problem z petla (https://forum.cdrinfo.pl/f5/c-problem-petla-69021/)

misiek767 06.12.2006 19:37

[c++] problem z petla
 
Mialem napisac program ktory wyswietla liczby slownie a przy wprowadzeniu cyfry 0 ma zakonczyc dzialanie Ten program wyglada u mnie tak
#include <cstdlib>
#include <iostream>
#include <istream>
#include <conio.h>
using namespace std;

int main(int argc, char *argv[])
{
int tab[3]={0};
int i;
char z;
while((tab[0]+tab[i-1]+tab[i-2])!=0){
cout<<"Podaj liczbe (zero konczy) ";
cout<<endl;
cout<<"wprowadziles "<<endl;
int z=0;
int i=0;
while((z!=13)&&(i!=3)){
z=getche();
if ((z>='0')&&(z<='9')){
tab[i]=z;
i++;}}
if (i==3){cout<<endl;
switch (tab[0]){

case '1':cout<<"sto ";break;
case '2':cout<<"dwiescie ";break;
case '3':cout<<"trzysta ";break;
case '4':cout<<"czterysta ";break;
case '5':cout<<"piecset ";break;
case '6':cout<<"szescset ";break;
case '7':cout<<"siedemset ";break;
case '8':cout<<"osiemset ";break;
case '9':cout<<"dziewiecset ";break;
}}
if (i>=2){
switch (tab[i-2]){

case '1': switch(tab[i-1]){ case '0':cout<<"dziesiec"; break;
case '1':cout<<"jedenascie";break;
case '2':cout<<"dwanascie";break;
case '3':cout<<"trzynascie";break;
case '4':cout<<"czternascie";break;
case '5':cout<<"pietnascie";break;
case '6':cout<<"szesnascie";break;
case '7':cout<<"siedemnascie";break;
case '8' : cout<<"osiemnascie";break;
case '9':cout<<"dziewietnascie";break;}i-=3;break;

case '2': cout<<"dwadziescia ";break;
case '3': cout<<"trzydziesci ";break;
case '4': cout<<"czterdziesci ";break;
case '5': cout<<"piecdziesiat ";break;
case '6': cout<<"szescdziesiat ";break;
case '7': cout<<"siedemdziesiat ";break;
case '8': cout<<"osiemdziesiat "; break;
case '9': cout<<"dziewiecdziesiat ";break;}}
if (i>=1){
switch(tab[i-1]){
case '1':cout<<"jeden ";break;
case '2':cout<<"dwa ";break;
case '3':cout<<"trzy ";break;
case '4':cout<<"cztery ";break;
case '5':cout<<"piec ";break;
case '6':cout<<"szesc ";break;
case '7':cout<<"siedem ";break;
case '8':cout<<"osiem ";break;
case '9':cout<<"dziewiec ";break;}}

cout<<endl;}
system("PAUSE");
return EXIT_SUCCESS;
}

No i powtarza jak mu wpisuje liczby ale jak mu wpisze zero i enter to i tak dalej powtarza zamiast przerwac gdzie jest blad

Kasprzak 07.12.2006 15:34

Nie mam kompilatora, ale kiedy***347; te***380; pisa***322;em taki program, ja rozwi***261;za***322;em to tak (nie wiem czy z tym pobraniem znaku b***281;dzie ok)
Kod:

#include <cstdlib>
#include <iostream>
#include <conio.h>

using namespace std;

string jednosci[10] = {"", " jeden", " dwa", " trzy", " cztery", " piec", " szesc", " siedem", " osiem", " dziewiec"};
string nastki[10] = {" dziesiec", " jedenascie", " dwanascie", " trzynascie", " czternascie", " pietnascie", " szesnascie", " siedemnascie", " osiemnascie", " dziewietnascie"};
string dziesiatki[10] ={"", "", " dwadziescia", " trzydziesci", " czterdziesci", " piecdziesiat", " szescdziesiat", " siedemdziesiat", " osiemdziesiat", " dziewiecdziesiat"};
string setki[10] = {"", " sto", " dwiescie", " trzysta", " czterysta", " piecset", " szescset", " siedemset", " osiemset", " dziewiecset"};
string wielkosci[6] = {"", " tys.", " mln.", " mld.", " bln.", " bld."};

int main(int argc, char *argv[])
{
  long int liczba;
  int reszta, rzad, i;
  string slowa;
  cout << "Podaj liczbe ktora chcesz zamienic na slowa " << endl;
  cin >> liczba;
  i = 1;
  rzad = 0;
  if (liczba <0)
  {
    slowa = slowa + " minus";
    liczba = abs(liczba);
  }
  if (liczba ==0)
      slowa = slowa + " zero";
  while (liczba > 0)
  {
    reszta = liczba % 10;
    liczba  = liczba / 10;
    if ( i == 1 )
      slowa = wielkosci[rzad] + slowa;
    if ( i==3 )
    {
      slowa = setki[reszta] + slowa;
      i = 0;
      rzad++;
    }
    if ( i==2 )
      slowa = dziesiatki[reszta] + slowa;
    if ( i == 1 && liczba % 10 != 1)
      slowa = jednosci[reszta] + slowa;
    if ( i == 1 && liczba % 10 == 1)
    {
      slowa = nastki[reszta] + slowa;
      liczba = liczba / 10;
      i++;
    }
    i++;
  }
char znak;
do {
  cout << slowa;
  cout << endl << endl;
  system("PAUSE");
  return EXIT_SUCCESS;}
 while ((znak=getch() ) !='0'); 
return 0;
}



Wszystkie czasy w strefie CET. Aktualna godzina: 16:57.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions Inc.