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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2013, 19:07   #1
sbnm
 
Регистрация: 02.01.2013
Сообщений: 5
По умолчанию Ошибка компилятора

Код:
#include <iostream>
#include <conio.h>
#define n 5
using namespace std;


int main()
{

int avenue_S[n];
int D[n];
int w;
int Dw; 

int a[n][n] = {5,7,3,0,1,   
            7,4,0,6,4,
            3,0,0,2,0,
            0,6,2,8,0,
            1,4,0,0,9}; 

       
cout << "\n\n"; cout << " ";
for(int i=0; i<n; i++)
{
  for(int j=0; j<n; j++)
  {
    if(a[i][j]==0) cout << "* ";
    else cout << a[i][j] << " ";
         //cout << "\n";
  }     
    cout << "\n\n ";   
}

w = 0;
Dw = 0;

 cout << "       -------------------------------------------------";
 cout << "\n\t| S |  w  |  D(w)  | ";
 for (int i=0; i<n; i++) 
 if (i != 0) cout << " D(" << i << ") |";
 cout << "\n";
 cout << "        -------------------------------------------------";
 
 for(int i=0; i<n; i++)
 {
   int min = 0;

 ругается здесь:   for(int j=0, cout << "\n"; j<n; j++) // expected init-declarator before '<<' token expected "," or ";" before '<<' token

   {
      if(avenue_S[j]!=0) cout << avenue_S[j]; 
        else cout << " ";      
   }        
 }
getch();
return 0;
}
помогите, пожалуйста...

Последний раз редактировалось Stilet; 30.03.2013 в 19:42.
sbnm вне форума Ответить с цитированием
Старый 30.03.2013, 19:44   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Так нельзя. В инициализации цикла должны быть однотипные операторы, если они через запятую перечисляются. А ты смешал присвоение переменной и вывод на экран.
Пиши
Код:
 cout << "\n"; for(int j=0; j<n; j++)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.03.2013, 19:46   #3
sbnm
 
Регистрация: 02.01.2013
Сообщений: 5
По умолчанию

Спасибо за ответ. Но дело в том, что в другой программе это проканывает, а здесь почему то нет... Тоже самое все, один в один, имею ввиду эта строчка.

Допустим, в этой программе:

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

#define MAX(a, b) ((a)>(b)?(a):(b))
#define N 3
#define M 28

int m[N]={3,7,9};
int c[N]={8,19,25};
int fm[M+1];

int f(int i)
{
    int i0, i1, i2;
    
    i0= ((i-m[0])>=(0)?(f(i-m[0])+c[0]):(0));
    i1= ((i-m[1])>=(0)?(f(i-m[1])+c[1]):(0));
    i2= ((i-m[2])>=(0)?(f(i-m[2])+c[2]):(0));
    
    if (i0>i1)
        if (i0>i2) {fm[i]=0; return i0; }
        else {fm[i]=2; return i2; }
    else
        if (i1>i2) {fm[i]=1; return i1; }
        else {fm[i]=2; return i2; }
    
}

int main()
{
    int i, k;

    for(i = 0, printf("\n  m:"); i<N; i++) printf("%4d", m[i]);
    for(i = 0, printf("\n  c:"); i<N; i++) printf("%4d", c[i]);
    printf("\n\n  M = %d\n\n", M);
    
    
    for(i = 0; i<=M; i++)
    printf("  f(%d) = max(f(%d-%d)+%d,f(%d-%d)+%d,f(%d-%d)+%d) = %d\n", i, i, m[0], c[0], i, m[1], c[1], i, m[2], c[2], f(i));
    
    k = M;
    while (k > 0)
    {
        printf("\n\n\n  f(%d) = %d", k, f(k));       
        printf("\n  m = %d, c = %d\n", m[fm[k]], c[fm[k]]);
        k -= m[fm[k]];    
    } 
    getch();
    return 0;
}

Последний раз редактировалось Stilet; 30.03.2013 в 19:51.
sbnm вне форума Ответить с цитированием
Старый 30.03.2013, 19:50   #4
alexander13
Форумчанин
 
Аватар для alexander13
 
Регистрация: 07.02.2013
Сообщений: 267
По умолчанию

Код:
for(int j=0; j<n; j++, cout << "\n")
Вот так можно.
Только все равно программа странная.. Там есть объявление avenue_S, но не производится никаких операций с массивом.. Программа призвана выводить тот мусор, который изначально содержится в памяти, выделенной под массив?
Μολὼν λαβέ
alexander13 вне форума Ответить с цитированием
Старый 30.03.2013, 19:52   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
в другой программе это проканывает
Наверное это особенности перегрузки <<. Потому с printf() работает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.03.2013, 19:56   #6
sbnm
 
Регистрация: 02.01.2013
Сообщений: 5
По умолчанию

Первая программа еще недоделана, я пытаюсь изобразить алгоритм дейкстры и вывести результат на экран в виде таблицы http://f-bit.ru/102189 стр.28
sbnm вне форума Ответить с цитированием
Старый 30.03.2013, 21:11   #7
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

Цитата:
Потому с printf() работает.
С принтф работает потому что она возвращает инт... вот и получается, что у запятой два операнда инты. Только как-то нехорошо это мешать в кучу инициализацию и вывод.
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка компилятора cs0433 j3st3r C# (си шарп) 7 14.12.2015 05:59
ошибка компилятора как исправить mato Visual C++ 5 10.04.2011 16:11
Ошибка компилятора... p1r2o3 Общие вопросы .NET 3 11.09.2010 13:36
Ошибка компилятора. LARGEADDRESSAWARE Fantom101 Общие вопросы C/C++ 1 12.09.2009 05:20
Ошибка компилятора??? KIRILL_FR Общие вопросы Delphi 10 25.04.2008 13:38