Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2007, 13:56   #1
Klyan
Пользователь
 
Регистрация: 30.12.2006
Сообщений: 26
По умолчанию Помогите дописать

Здравствуйте, помогите дописать программу, которая читает любую десятичную цифру и выводит ее название на экран таким образом, чтобы запрос продолжался до тех пор, пока не введен 0 (нуль).

Цитата:
#include<stdio.h>
main( )
{
int i;
printf("\n Введите десятичную цифру =>"); scanf("%d",&i); printf("\t\t");
switch(i)
{
case 1: printf("%d -один \n",i); break;
case 2: printf("%d -два \n",i); break;
case 3: printf("%d -три \n",i); break;
case 4: printf("%d -четыре \n",i); break;
case 5: printf("%d -пять \n",i); break;
case 6: printf("%d -шесть \n",i); break;
case 7: printf("%d -семь \n",i); break;
case 8: printf("%d -восемь \n",i); break;
case 9: printf("%d -девять \n",i); break;
case 0: printf("%d -нуль \n",i); break;
default: printf("d - это не цифра\n",i);
}
}
пробовал создавать переход к метке, но не чего не получается, прога зависает или постоянно выводит одно и то же сообщение.
Заранее благодарен.
Klyan вне форума Ответить с цитированием
Старый 20.06.2007, 14:55   #2
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

Писал по быстрому, а проверить не где
Код:
#include<stdio.h>;
#include<conio.h>;
#include<windows.h>;
main( )
{
int i;
while (i != 0)
{
printf("\n input a value =>");
 scanf("%d",&i); printf("\t\t");
switch(i)
{
case 1: printf("%d -one \n",i); break;
case 2: printf("%d -two \n",i); break;
case 3: printf("%d -three \n",i); break;
case 4: printf("%d -four \n",i); break;
case 5: printf("%d -five \n",i); break;
case 6: printf("%d -six \n",i); break;
case 7: printf("%d -seven \n",i); break;
case 8: printf("%d -eight \n",i); break;
case 9: printf("%d -nine \n",i); break;
case 0:
{
printf("%d - zero \n",i);
exit(0);
}
default: printf("d - not a value\n",i);
exit(0);
return (0);
}
}
}
Дома проверил вот мой вариант только тут полно багов. Которые устраняться только после:
1) Тотальной проработки проги с заменой управляющих операторов.
2) Введением в код кучи проверок.

Последний раз редактировалось merax; 20.06.2007 в 16:33.
merax вне форума Ответить с цитированием
Старый 21.06.2007, 07:47   #3
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Вначале i нужно инициализировать (или do ... while).
Все exit'ы убрать, return 0 написать в конце функции, а не под switch загонять.
Зачем windows.h?
Carbon вне форума Ответить с цитированием
Старый 22.06.2007, 00:17   #4
Klyan
Пользователь
 
Регистрация: 30.12.2006
Сообщений: 26
По умолчанию

И в продолжение темы:
Наверное я такой тупой до меня никак не доходит!
Помогите вот еще с чем задача аналогичная.
По введенному с клавы знаку действия найти для 2-х заданных чисел результат операции.
Цитата:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
main()
{
clrscr();
char znak;
int a,b,c;
M:
printf("\nVvedite pervoe chislo="); scanf("%d",&a);
printf("\nVvedite vtoroe chislo="); scanf("%d",&b);
printf("\nVvedite znak"); scanf("%c",&znak);
switch(znak)
{
case '+': c=a+b; printf("%d\nSumma = ",c);break;
case '-': c=a-b; printf("%d\nRaznost = ",c);break;
case '*': c=a*b; printf("%d\nProizvedenie = ",c); break;
case '/': if(b!=0) { c=a/b; printf("%d\nChastnoe = ",c);}
else printf("deletil doljen byt otlichnym ot nulya"); goto M; break;
case '^': c=a^b; printf("%d\n!!!!!!!! = ",c); break;
default: printf("\nВведен неверный знак. Попробуй еще!\n"); goto M;
}
getchar();
}
C почти не знаю, на Pascal решил на C не могу и всё тут...
и еще как возведение в степень делается (взамест c=a^b)
Klyan вне форума Ответить с цитированием
Старый 22.06.2007, 00:39   #5
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

goto M; - это жестоко!

main() - опять жестоко!

int main(), а после getchar(); нужно return 0;

Цитата:
и еще как возведение в степень делается (взамест c=a^b)
#include <math.h>

c=pow(a,b);
Carbon вне форума Ответить с цитированием
Старый 22.06.2007, 01:16   #6
Klyan
Пользователь
 
Регистрация: 30.12.2006
Сообщений: 26
По умолчанию

Цитата:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>
int main()
{
clrscr();
char znak;
int a,b,c;
printf("\nVvedite pervoe chislo="); scanf("%d",&a);
printf("\nVvedite vtoroe chislo="); scanf("%d",&b);
printf("\nVvedite znak"); scanf("%c",&znak);
switch(znak)
{
case '+': c=a+b; printf("%d\nSumma = ",c);
case '-': c=a-b; printf("%d\nRaznost = ",c);
case '*': c=a*b; printf("%d\nProizvedenie = ",c);
case '/': if(b!=0) { c=a/b; printf("%d\nChastnoe = ",c);}
else printf("deletil doljen byt otlichnym ot nulya");
case '^': c=pow(a,b); printf("%d\n!!!!!!!! = ",c);
default: printf("\nVveden nevernyi znak! Poprobuy eshe!\n");
}
getchar();
return 0;
getchar();
}
Это должно выглядеть так?
Klyan вне форума Ответить с цитированием
Старый 22.06.2007, 01:19   #7
Klyan
Пользователь
 
Регистрация: 30.12.2006
Сообщений: 26
По умолчанию

Работает не так как хотелось бы!
Сначало спрашивает первое число, затем второе, затем знак и тут же выводит, что знак не верный, хотя я его не вводил, и все
Klyan вне форума Ответить с цитированием
Старый 22.06.2007, 01:49   #8
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

getchar() после return 0 убери: от него толку нет.
В конце каждого case ставь break;

case '+': c=a+b; printf("%d\nSumma = ",c); break;
Carbon вне форума Ответить с цитированием
Старый 22.06.2007, 01:55   #9
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Код:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>

int main()
{
  clrscr();
  char znak;
  int a,b,c;
  bool valid=false;

  printf("\nVvedite pervoe chislo=");
  scanf("%d",&a);
  printf("\nVvedite vtoroe chislo=");
  scanf("%d",&b);
  printf("\nVvedite znak");
  scanf("%c",&znak);

  while (!valid)
  {
    valid=true;  

  switch(znak)
  {
    case '+': 
      c=a+b; 
      printf("Summa = %d\n",c);
      break;
    case '-': 
      c=a-b; 
      printf("Raznost = %d\n",c);
      break;
    case '*': 
      c=a*b; 
      printf("Proizvedenie = %d\n",c);
      break;
    case '/': 
      if(b!=0) 
      { 
        c=a/b; 
        printf("%d\nChastnoe = %d\n",c);
      }
      else 
        printf("deletil doljen byt otlichnym ot nulya");
      break;
    case '^': 
      c=pow(a,b);
      printf("power = %d\n",c);
      break;
    default:
      printf("\nVveden nevernyi znak! Poprobuy eshe!\n");
      valid=false;
  }
  }
  getchar();
  return 0;
}

Последний раз редактировалось Carbon; 22.06.2007 в 01:57.
Carbon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите дописать программу starry_night Помощь студентам 0 04.06.2008 19:24
Помогите дописать ShnapS Паскаль, Turbo Pascal, PascalABC.NET 4 28.05.2008 21:08
Помогите дописать программу. ShnapS Паскаль, Turbo Pascal, PascalABC.NET 5 17.05.2008 19:50
Помогите дописать пояснение RECREATOR Помощь студентам 4 10.12.2007 09:07
Помогите дописать компонент Mickle Компоненты Delphi 0 28.05.2007 19:41