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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.03.2016, 21:08   #11
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

в посту #7 я задал пару вопросов.
ответы гидэ?!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 08.03.2016, 21:10   #12
elennaa
Пользователь
 
Регистрация: 22.11.2015
Сообщений: 22
По умолчанию

это вроде как проверка и то что можно вводить
elennaa вне форума Ответить с цитированием
Старый 09.03.2016, 11:50   #13
max_prorok
Форумчанин
 
Регистрация: 06.10.2011
Сообщений: 181
По умолчанию

По порядку:
Цитата:
Сообщение от elennaa Посмотреть сообщение
Код:
int f()
{
    char f[20];
    int c, k=0;
 
    start2:
   
 
for(register int i = 0;i<20;i++)
    {
        k++;
    }
 
    for(register int i = 0;i<20;i++)
    {
        if(f[i] == '0' || f[i]=='1' || f[i]=='2' || f[i]=='3'|| f[i]=='4'||f[i]=='5'||f[i]=='6'||f[i]=='7'||f[i]=='8'||f[i]=='9' || f[i]=='-')
        {}
        else if(f[i] == '.' || f[i]==',')
        {
            printf("\n Просите вы ввели символ а его вводить нельзя!\n"); 
            printf("\n Повторите ввод переменной: ");
            
           
        }
        else if(k>20)
        {
            printf("\n Превышен лимит возможных символов\n");
            printf("\n Попробуйте еще раз  \n");
            
          
        }
        else
        {
            printf("\n Некорректные данные ");
            printf("\n  Попробуйте еще раз \n");
 
        }
    }
    c = 20;
 
    return c;
}
Не нашел, где в Main() используется функция f(). Зачем ее надо было сюда вообще размещать?

Далее:
Цитата:
Сообщение от elennaa Посмотреть сообщение
Код:
printf("\n Спасибо что использовали это приложения!\n");
Как бы программирование программированием, но орфография должна соблюдаться. На мой взгляд, правильнее написать: "Спасибо, что использовали это приложение!" или "Спасибо за использование этого приложения!".

Далее, b! - если я правильно понял, это имеется в виду факториал. Тогда не совсем понятно, почему вы его заменяете на выражение b*(b-1) (2!=2=2*1 и 3!=6=3*2, но 1!=1, 4!=24, 5!=120, и соответственно не попадает под ваше правило). Считайте его отдельно. И да, насколько мне известно, факториал применяется только к целым числам, соответственно не вижу резона использовать для этих целей float.

Далее, после блока if, на мой взгляд не хватает блока else:
Код:
if(b*b + c == 0)
    {
        printf("\n (b*b)+(pow((double)5,(double)c)) = 0 \n");
        printf("\n  b*(b - 1) = 0 \n");
        printf("\n Простите на нуль делить нельзя!");
 
        
        
        getch();
       
    }
else
    { 
        q = (a*a + b*b) / (b*b + pow((double)5,(double)c));  //формулу надо править
        
        printf("\n Решение: \n");
        printf("\n (a*a + b*b)/(b*b +pow((double)5,(double)c) *(b*(b-1)) = q \n");
        printf("\n Спасибо что использовали это приложения!\n");
        getch();
    }
Еще есть вопрос по поводу вот этого условия:
Цитата:
Сообщение от elennaa Посмотреть сообщение
Код:
    if(b*b + c == 0)
    {
        printf("\n (b*b)+(pow((double)5,(double)c)) = 0 \n");
        printf("\n  b*(b - 1) = 0 \n");
        printf("\n Простите на нуль делить нельзя!");
 
        
        
        getch();
       
    }
С чего вы взяли что если b*b + c = 0, то и b*b+5^c тоже равен 0? И зачем во фрагменте этого кода писать строку:
Код:
printf("\n  b*(b - 1) = 0 \n");
Судя по вашей формуле факториал не стоит в знаменателе.

В итоге должно получиться нечто такое:
Код:
int Main(void)
{
...
int bfakt=1; //переменная под факториал
for (int i=1; i<=b; i++) bfact*=b; //расчет факториала
if((b*b)+(pow((double)5,(double)c)) == 0)
    {
        printf("\n (b*b)+(pow((double)5,(double)c)) = 0 \n");
        printf("\n Простите на нуль делить нельзя!");
        getch();   
    }
else
    {
    q = (a*a + b*b) / (b*b + pow((double)5,(double)c))*bfact;
    printf("\n Решение: \n");
    printf("\n (a*a + b*b)/(b*b +5^c) *b! = %.5f \n", q);
    printf("\n Спасибо, что использовали это приложение!\n");
    getch();
    }
P.S. Мог что-то упустить, не обещаю работоспособность кода, т.к. проверять не на чем.

Последний раз редактировалось max_prorok; 09.03.2016 в 11:59. Причина: Чуть подзабыл, что такое факториал.
max_prorok вне форума Ответить с цитированием
Старый 09.03.2016, 12:12   #14
max_prorok
Форумчанин
 
Регистрация: 06.10.2011
Сообщений: 181
По умолчанию

Ну и коль я разошелся добавлю. Метод main(void) у вас задан как int, при этом не вижу, чтобы она возвращала хоть какое-то значение. Зачем вам строка:
Код:
while(1){
???
Хотите зациклить все это действо?, то лучше тогда написать так:
Код:
int main(void)
{
...
bool q=true;
char w;
while(q)
{
...
q!=q;
printf("\n Повторить расчеты (y/n): ");
scanf( "%с", &w);
if (w=='y') q=true;
}
return 0;
}
Это простейший пример, если не надо делать проверку на ввод в конце 'n'.

Последний раз редактировалось max_prorok; 09.03.2016 в 12:42.
max_prorok вне форума Ответить с цитированием
Старый 09.03.2016, 15:56   #15
elennaa
Пользователь
 
Регистрация: 22.11.2015
Сообщений: 22
По умолчанию

Спасибо за помощь, я вроде как все исправила но теперь выдает такие ошибки и я не могу найти где их исправлять:
[Error] expected ';' before '{' token
[Error] expected '}' at end of input

Подскажите пожалуйста что теперь здесь не так

Код:
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<locale.h>
 
int f();
 
int main(void)
{
    setlocale(LC_ALL,"Russian");
 
    int q;
    int a,b,c;
    
    
            
    printf("\t\t\t\t Условия пользования! \n");
    printf("\n Не вводите буквы!! \n");
    printf("\n Не вводите символы, кроме цифр! \n");
    printf("\n Дроби вводить нельзя! \n");
    printf("\n Убедительная просьба, выполнять условия пользования \n во избежания некорректной роботы програмы. \n\n");
{
    printf("\n \n Выражения для вычисления: (a*a + b*b) / (b*b + 5^c) * b! = q \n");
    printf("\n Введите переменную  a: ");
    scanf( "%i", &a);
    printf("\n Введите переменную  b: ");
    scanf( "%i", &b);
    printf("\n Введите переменную c: ");
    scanf( "%i", &c);
    
    {
        int bfakt=1; 
for (int i=1; i<=b; i++) bfact*=b; 
if((b*b)+(pow((double)5,(double)c)) == 0)
    {
        printf("\n (b*b)+(pow((double)5,(double)c)) = 0 \n");
        printf("\n Простите на нуль делить нельзя!");
        getch();   
    }
else
    {
    q = (a*a + b*b) / (b*b + pow((double)5,(double)c))*bfact;
    printf("\n Решение: \n");
    printf("\n (a*a + b*b)/(b*b +5^c) *b! = %i \n", q);
    printf("\n Спасибо, что использовали это приложение!\n");
    getch();
    }
}
int () 
{ 
  bool q=true;
  char w;
  while(q)
{
  start2:

for(register int i = 0;i<20;i++)
    {
        k++;
    }

    for(register int i = 0;i<20;i++)
    {
        if(f[i] == '0' || f[i]=='1' || f[i]=='2' || f[i]=='3'|| f[i]=='4'||f[i]=='5'||f[i]=='6'||f[i]=='7'||f[i]=='8'||f[i]=='9' || f[i]=='-')
        { }
		else if(f[i] == '.' || f[i]==',')
        {
            printf("\n Просите вы ввели символ а его вводить нельзя!\n"); 
            printf("\n Повторите ввод переменной: ");
        }
        else if(k>20)
        {
            printf("\n Превышен лимит возможных символов\n");
            printf("\n Попробуйте еще раз  \n");
            
          
        }
        else
        {
            printf("\n Некорректные данные ");
            printf("\n  Попробуйте еще раз \n");
 
        }
    }

  q!=q;
printf("\n Повторить расчеты (y/n): ");
scanf( "%c", &w);
if (w=='y') q=true;
}
return 0;
}
elennaa вне форума Ответить с цитированием
Старый 09.03.2016, 16:03   #16
max_prorok
Форумчанин
 
Регистрация: 06.10.2011
Сообщений: 181
По умолчанию

1)Как минимум:
Цитата:
Сообщение от elennaa Посмотреть сообщение
Код:

int () 
{ 
  bool q=true;
  char w;
  while(q)
{
что такое int()?

2) Зачем здесь скобка?
Код:
    printf("\n Убедительная просьба, выполнять условия пользования \n во избежания некорректной роботы програмы. \n\n");
{
    printf("\n \n Выражения для вычисления: (a*a + b*b) / (b*b + 5^c) * b! = q \n");
3) Переменная q в main`е как минимум float.
4) метод f(). Вопрос остался. Вы понимаете как вы его применяете? У вас программа, в случае удачной компиляции, начинает работы с первой строки метода main(). В main() вы нигде не вызываете метод f(). Соответственно, ваша программа никогда не зайдет в этот блок.

Последний раз редактировалось max_prorok; 09.03.2016 в 16:11.
max_prorok вне форума Ответить с цитированием
Старый 09.03.2016, 16:12   #17
elennaa
Пользователь
 
Регистрация: 22.11.2015
Сообщений: 22
По умолчанию

Исправила но эти ошибки остались.
elennaa вне форума Ответить с цитированием
Старый 09.03.2016, 16:15   #18
max_prorok
Форумчанин
 
Регистрация: 06.10.2011
Сообщений: 181
По умолчанию

Цитата:
Сообщение от max_prorok Посмотреть сообщение
Хотите зациклить все это действо?, то лучше тогда написать так:
Код:
int main(void)
{
...
bool q=true;
char w;
while(q)
{
...
q!=q;
printf("\n Повторить расчеты (y/n): ");
scanf( "%с", &w);
if (w=='y') q=true;
}
return 0;
}
Это простейший пример, если не надо делать проверку на ввод в конце 'n'.
Если вы не заметили, то данный код находится внутри метода main(), а не метода f(). Единственно, я допустил ошибку при выборе имени переменной типа bool. Поскольку у вас переменная q уже есть, то надо обозвать ее как-нибудь по-другому.
max_prorok вне форума Ответить с цитированием
Старый 09.03.2016, 16:23   #19
max_prorok
Форумчанин
 
Регистрация: 06.10.2011
Сообщений: 181
По умолчанию

Попробуйте просто создать новый проект и вставить туда следующий код:
Код:
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<locale.h>
 
int f();
 
int main(void)
{
    setlocale(LC_ALL,"Russian");
 
    float q;
    float a,b,c;
    
    
            
    printf("\t\t\t\t Условия пользования! \n");
    printf("\n Не вводите буквы!! \n");
    printf("\n Не вводите символы, кроме цифр! \n");
    printf("\n Дроби вводить нельзя! \n");
    printf("\n Убедительная просьба, выполнять условия пользования \n во избежания некорректной роботы программы. \n\n");
bool doTask=true
while (doTask)
{
    printf("\n \n Выражения для вычисления: (a*a + b*b) / (b*b + 5^c) * b! = q \n");
    printf("\n Введите переменную  a: ");
    scanf( "%i", &a);
    printf("\n Введите переменную  b: ");
    scanf( "%i", &b);
    printf("\n Введите переменную c: ");
    scanf( "%i", &c);
        int bfakt=1; 
for (int i=1; i<=b; i++) bfact*=b; 
if((b*b)+(pow((double)5,(double)c)) == 0)
    {
        printf("\n (b*b)+(pow((double)5,(double)c)) = 0 \n");
        printf("\n Простите на нуль делить нельзя!");
        getch();   
    }
else
    {
    q = (a*a + b*b) / (b*b + pow((double)5,(double)c))*bfact;
    printf("\n Решение: \n");
    printf("\n (a*a + b*b)/(b*b +5^c) *b! = %i \n", q);
    printf("\n Спасибо, что использовали это приложение!\n");
    getch();
    }
doTask!=doTask;
printf("\n Повторить расчеты (y/n): ");
scanf( "%с", &w);
if (w=='y') doTask=true;
}
return 0;
}
Если не скомпилируется, выкладывайте ошибки, если компилируется, то проверьте правильность. Желательно еще проверить такое значение, при котором может появиться исключение.

Последний раз редактировалось max_prorok; 09.03.2016 в 16:28. Причина: Поправил код. Проверьте. Изменил тип переменных с int на float
max_prorok вне форума Ответить с цитированием
Старый 09.03.2016, 16:26   #20
max_prorok
Форумчанин
 
Регистрация: 06.10.2011
Сообщений: 181
По умолчанию

Пустое сообщение.

Последний раз редактировалось max_prorok; 09.03.2016 в 16:33.
max_prorok вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Воспользовался excel надстройками и после этого начала появляться ошибка «ошибка 13 Type Misscmatch» malinov1maxim Microsoft Office Excel 5 27.01.2016 23:17
Программе после установки не хватает прав на запись в файл Dux Общие вопросы Delphi 17 16.08.2015 11:50
сохранение действий в программе после закрытия fins Общие вопросы Delphi 9 01.07.2015 18:59
Delphi 7. Сохранение данных в программе после ее закрытия. Bomjarik Помощь студентам 4 23.05.2012 18:25
ищем программиста для переделывания программы !>СаНеК<! Фриланс 10 29.02.2012 13:20