Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> закидывает в компиляторе ошибками начиная с C2143, совсем еще зеленый, не пойму что не так 
V
    Опции темы
Volker
  Дата 27.9.2017, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 26.9.2017

Репутация: нет
Всего: нет



#include<stdio.h>
#include<math.h>
#include <locale.h>
main()
{
    setlocale(LC_ALL, "Rus");
    int g, 1<=m<=12, d=Kdm[m-1], n, N, Z, Kdm[m-1]={31,28,31,30,31,30,31,31,30,31,30,31};
    double a, y, k;

    printf("g=");
    scanf("%d", &g);

    if(g<1583)
    {
        printf("введите дату от начала работы Григорианского календаря(с 1583г. и выше)\n");
    }
    else
    {
        for(m=1;m==12;m++)
        {

            if((m==2)&&(g%4==0)&&(g%100!=0)||(g%400==0))
            {
                d=Kdm[m-1]+1;
            }
            else
            {
                d=Kdm[m-1];
            }

            a=(14-m)/12;
            y=g-a;
            k=m+12a-2;
            Z=7000+d+y+y/4+y/100+y/400+(31*k)/12;
            N=Z%7;

            if(N=3)
            {
                n++;
            }
        }

        printf("n=%d сред(ы\а) приходящихся на конец месяца в году\n");

}

Никак не пойму что не нравится компилятору в 7 и 8 строке. Подозреваю, что большинство остальных ошибок идут именно от туда, ибо не могут распознать переменные. Может кто посказать что не так в моей работе? (И желательно почему это не так) Заранее спасибо!

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  Безымянный.png 46,09 Kb
PM MAIL   Вверх
feodorv
Дата 27.9.2017, 12:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Ох. Ну тут целый букет недоразумений.
  • Цитата(Volker @  27.9.2017,  00:03 Найти цитируемый пост)
    double a, y, k;
    Вам точно нужен double?
  • Цитата(Volker @  27.9.2017,  00:03 Найти цитируемый пост)
    1<=m<=12
    Что Вы этим хотели сказать? Что номер месяца может принимать значения от 1 до 12? Компилятор не знает таких тонкостей, он может понять только
    Код
    int m;
  • Цитата(Volker @  27.9.2017,  00:03 Найти цитируемый пост)
    int...d=Kdm[m-1]
    Массив Kdm еще не определен, и компилятор о нём ничего не знает.
  • Цитата(Volker @  27.9.2017,  00:03 Найти цитируемый пост)
     Kdm[m-1]={31,28,31,30,31,30,31,31,30,31,30,31}

    Почему m-1? Массив имеет вполне определённый размер - 12, поэтому
    Код
    int Kdm[12] = { ... }
  • Цитата(Volker @  27.9.2017,  00:03 Найти цитируемый пост)
    for(m=1;m==12;m++)
    Почему m==12? Наверное, Вы имели в виду m<=12, да?
  • Цитата(Volker @  27.9.2017,  00:03 Найти цитируемый пост)
    if((m==2)&&(g%4==0)&&(g%100!=0)||(g%400==0))
    У Вас получилось так: если (m==2 && g%4==0 && g%100!=0) или же (g%400==0)... Хотя, Вы хотели так: если (m==2) и ((g%4==0&&g%100!=0) или (g%400==0)). То есть отсутствует пара скобок () в нужном месте.
  • Цитата(Volker @  27.9.2017,  00:03 Найти цитируемый пост)
    if(N=3){n++;}
    Круто, но переменная n никак не инициализована (ей не присвоено никакое начальное значение, которое, как я предполагаю, должно быть нулём).
  • Цитата(Volker @  27.9.2017,  00:03 Найти цитируемый пост)
    if(N=3)
    Оператор сравнения в C/C++ - это ==, а не =, что есть оператор присваивания.
  • Цитата(Volker @  27.9.2017,  00:03 Найти цитируемый пост)
    printf("n=%d сред(ы\а)...";
    Если хотите вывести символ \ в printf, то его нужно удваивать (так как по совместительству он является ещё и экранирующим символом), а так у Вас получился вывод на экран несуществующего спецсимвола '\a'.
  • В языке программирования C функция main() требует по окончании возвращения какого-то значения (это код завершения программы, обычно - ноль), и лучше описывать main() как 
    Код
    int main()
  • что-то ещё, что вылетело из головы, пока писал эту простыню...
Короче, не берусь судить о корректности используемого Вами алгоритма, но по-моему Ваша программа должна иметь вид, похожий на следующий:
Код

#include <stdio.h>
#include <locale.h>

const int Kdm[12]={31,28,31,30,31,30,31,31,30,31,30,31};

int main()
{
  int g, m, d, n, N, Z;
  double a, y, k;

  setlocale(LC_ALL, "Rus");

  printf( "g=" );
  scanf( "%d", &g);

  if( g < 1583 )
  {
    printf( "введите дату от начала работы Григорианского календаря(с 1583г. и выше)\n" );
  }
  else
  {
    n = 0;

    for( m = 1; m <= 12; m++)
    {
      d = Kdm[m-1];
      if( (m == 2) && ((g % 4 == 0) && (g % 100 != 0) || (g % 400 == 0)) ) d++;

      a = (14 - m) / 12;
      y = g - a;
      k = m + 12 * a - 2;
      Z = 7000 + d + y + y/4 + y/100 + y/400 + (31*k)/12;
      N = Z % 7;

      if( N == 3 ) n++;
    }

    printf( "n=%d сред(ы\\а) приходящихся на конец месяца в году\n", n);
  }

  return 0;
}


Это сообщение отредактировал(а) feodorv - 27.9.2017, 12:44


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
Volker
Дата 27.9.2017, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 26.9.2017

Репутация: нет
Всего: нет



Спасибо большое! ща все проанализирую и постараюсь исправиться

PM MAIL   Вверх
Volker
Дата 27.9.2017, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 26.9.2017

Репутация: нет
Всего: нет



все исправил, все работает. примерно такое же как у вас и вышло
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0559 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.