• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте, чтобы узнать больше. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Не могу найти ошибку

mish_k98

Ученик
Почётный участник
Регистрация
28 Ноя 2010
Сообщения
728
Реакции
1
Баллы
0
здравствуйте.начал писать калькулятор на dev-c++.вот код моей программы.но вместо результата там пустая строка.в чём дело?

#include<stdio.h>
#include<conio.h>
main()
{
int a,b,c;

printf("Vvedite tseloe chislo ");
scanf("%d", &a);
printf("Vvedite operatsiy ");
scanf("%d", &c);
printf("Vvedite tseloe chislo ");
scanf("%d", &b);

switch(c)
{
case '+': printf("suma:%d \n",a,b,c); break;
case '-': printf("raznitsa: %d-%d=%d \n", a,b,c);
}

getch();
}
 
На вот тебе калькулятор простой. на С++
 

Вложения

  • Calc.zip
    Calc.zip
    311.9 KB · Просмотры: 19
мне нужно найти ошибку в моём коде, так как то для меня сложно.
 
Потому, что операция это + - * / это не целое число и тип не int а char
 
ясно.попробую
 
я исправил но программа неправильно считает
 
ну конечно не правильно. вы же даже ничего не посчитали. и только что-то вывели. И то не правильно
 
Код:
#include<stdio.h>
#include<conio.h>
main()
{
      int a,b,d;
char c;
    
      printf("Vvedite tseloe chislo ");
      scanf("%d", &a);
      printf("Vvedite operatsiy ");
      scanf("%с", &c);
       printf("Vvedite tseloe chislo ");
      scanf("%d", &b);
     
     switch(c)
               {
               case '+': printf("%d %c %d = %d\n",a,c,b,a+b); break;
               case '-': printf("%d %c %d = %d\n", a,c,b,a-b);
                        } 
    
      getch();
      }
вот, должно работать, но я не проверял
 
программа не работает.привводе второго числа выходит из программы.и у вас ошибка.надо зписать так
case '+': printf("%d %c %d = %d\n",a,c,b,d,a+b); break;
case '-': printf("%d %c %d = %d\n", a,c,b,d,a-b);
 
Вот проверенная программа. Работает правильно
Код:
#include<stdio.h>
#include<conio.h>
main(){
      int a,b;
      char c;

      printf("Vvedite tseloe chislo ");
      scanf("%d", &a);
      printf("Vvedite operatsiy ");
      scanf("%s", &c);
      printf("Vvedite tseloe chislo ");
      scanf("%d", &b);
      switch(c){
        case '+': printf("%d %c %d = %d\n", a, c, b, a+b); break;
        case '-': printf("%d %c %d = %d\n", a, c, b, a-b);
      }
      getch();
}
 
спасибо за помощ
 
появилась проблема.хочу чтоб калькулятор считал вещественные числа.вотизменил программу.но при вводе второго числаоно выходит с программы.в чём дело?


#include<stdio.h>
#include<conio.h>
main()

{
float a,b;
char c;
printf("Vvedite chislo ");
scanf("%f", &a);
printf("Vvedite operatsiy ");
scanf("%s", &c);
printf("Vvedite chislo ");
scanf("%f", &b);

switch(c)
{
case '+': printf("Suma:%f%c%f=%f \n",a,c,b,a+b); break;
case '*': printf("Dobutok:%f%c%f=%f \n",a,c,b,a*b);break;
case '/': printf("Chastka:%f%c%f=%f \n",a,c,b,a/b); break;
case '-': printf("Raznitsa: %f%c%f=%f \n", a,c,b,a-b);
}

getch();
}
 
попробуйте вместо %f поставить %g
 
и вообще у вас есть несколько ошибок.
1) функция main() обязательно должна иметь тип int и возвратить 0 в случае удачного завершения. библиотека conio.h не нужна. для с++ правильнее использовать getchar(). ну и наконец делайте отступы в программе. в общем код будет таким:
Код:
#include <stdio.h>


int main()
{
  float a,b;
  char c;
  printf("Vvedite chislo ");
  scanf("%g", &a);
  printf("Vvedite operatsiy ");
  scanf("%s", &c);
  printf("Vvedite chislo ");
  scanf("%g", &b);

  switch(c)
  {
    case '+': printf("Suma: %g %c %g = %g \n", a, c, b, a+b); break;
    case '*': printf("Dobutok: %g %c %g = %g \n", a, c, b, a*b); break;
    case '/': printf("Chastka: %g %c %g = %g \n", a, c, b, a/b); break;
    case '-': printf("Raznitsa: %g %c %g = %g \n", a, c, b, a-b); break;
  }

  getchar();

  return 0;
}
 
спасибо за помощ.мой код тоже работает.извините.просто были некоторые причины.извините.
 
решил написать ещё одну программу.но она не работает.в чём дело?


#include <stdio.h>
#include <conio.h>

main()
{
int a,b,d,e;
printf("1-perimetr priamoygolnika,2-ploschad priamoygolnika\n");
printf("Vvedite dejstvie\n");
scanf("%d", &a);

switch(a)
{
case '1':

printf("Vvedite storonu\n");
scanf("%d%d", &b,&d);
e=(b+d)*2;
printf("perimetr=",&e);

case '2':
printf("Vvedite storonu\n");
scanf("%d%d", &b,&d);
e=b*d;
printf("ploschad=",&e);
}
getch();
}
 
1) еще раз! функция main должна возвращать целое число, да у вас может компилятор пропустить и без числа. но! это не правильно по спецификации.
2) если у вас переменная а имеет тип int то и сравнивать его стоит с типом int а вы сравниваете с символом.
3) Нужно не забывать о break; в конце каждого! case (его можно упускать, но только в некоторых случаях)
4) почитайте еще раз о функции printf
1. у вас не задан спецификатор формата в строке
2. вы передаете не значение переменной в функцию а адрес где эта переменная "находиться"
 
а как всё должно быть?
 
Код:
решил написать ещё одну программу.но она не работает.в чём дело?


#include <stdio.h>
#include <conio.h>

int main(){
        int a,b,d,e;
  printf("1-perimetr priamoygolnika,2-ploschad priamoygolnika\n");
  printf("Vvedite dejstvie\n");
  scanf("%i", &a);
      
  switch(a){
    case 1:
      printf("Vvedite storonu\n");
                     scanf("%i%i", &b,&d);
                     e=(b+d)*2;
                     printf("perimetr = %i", e);
                     break;

    case 2:     
                     printf("Vvedite storonu\n");
                     scanf("%i%i", &b,&d);
                     e=b*d;
                     printf("ploschad = %i", e);
                     break;
  }
              
  getch();
  return 0;
              }

Примерно так(не проверял)
 
Назад
Сверху