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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2009, 22:50   #1
StudentPolitech
Форумчанин
 
Аватар для StudentPolitech
 
Регистрация: 21.11.2008
Сообщений: 400
Печаль Неиспользуемая переменная

Почему пишет переменная ch не используется
Код:
 #include<iostream.h>
 #include<conio.h>
 const int n=10;
 int main()
 {
 clrscr();
 int max=0,max2=0,ch=0,mas[n], mas2[n],  mas3[n], nom[n],nom2[n];
 cout<<"vvedite chisla v massiv nomer 1"<<endl;
 for(int i=0; i<n; i++)
 {
 cin>>mas[n];
 }
 cout<<"vvedite chisla v massiv nomer 2"<<endl;
 for( i=0; i<n; i++)
 {
 cin>>mas2[n];
 }
 for(int j=0;j<n;j++)
 {
 for(i=0;i<n;i++)
 {
 if(mas[i]>max)
 {
 max=mas[i];
 ch=i;
 }
 if(i==n)
 {
 ch=nom[j];
 }
 }
 }
  for(j=0;j<n;j++)
 {
 for(i=0;i<n;i++)
 {
 if(mas2[i]>max2)
 {
 max2=mas2[i];
 ch=i;
 }
 if(i==n)
 {
 ch=nom2[j];
 }
 }
 }


 getch();
 return 0;
 }
Винда, KIS 2010, книжка по С/С++, остальное неважно........
StudentPolitech вне форума Ответить с цитированием
Старый 06.10.2009, 23:05   #2
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

во первых, почему нельзя писать так???
Код:
#include<iostream>

using namespace std;

const int n = 10;

int main() {
    int max = 0, max2 = 0, ch = 0, mas[n], mas2[n], mas3[n], nom[n],nom2[n];

    cout << "vvedite chisla v massiv nomer 1" << endl;

    for (int i = 0; i < n; i++) {
        cin >> mas[n];
    }

    cout << "vvedite chisla v massiv nomer 2" << endl;
    
	for (int i = 0; i < n; i++) {
        cin >> mas2[n];
    }

    for (int j = 0; j < n; j++) {
        for (int i = 0; i < n; i++) {
            if (mas[i] > max) {
                max = mas[i];
                ch = i;
            }
            if (i == n) {
                ch = nom[j];
            }
        }
    }

    for (int j = 0; j < n; j++) {
        for (int i = 0; i < n; i++) {
            if (mas2[i] > max2) {
                max2 = mas2[i];
                ch = i;
            }
            if (i == n) {
                ch = nom2[j];
            }
        }
    }

    return 0;
}
во вторых, если у тебя был только варнинг на переменную ch - твой компилятор говна кусок:
Код:
 #include<iostream.h>
 #include<conio.h>
 const int n=10;
 int main()
 {
 clrscr();
 int max=0,max2=0,ch=0,mas[n], mas2[n],  mas3[n], nom[n],nom2[n];
 cout<<"vvedite chisla v massiv nomer 1"<<endl;
 for(int i=0; i<n; i++)
 {
 cin>>mas[n];
 }
 cout<<"vvedite chisla v massiv nomer 2"<<endl;
 for( i=0; i<n; i++)
 {
 cin>>mas2[n];
 }
 for(int j=0;j<n;j++)
 {
 for(i=0;i<n;i++)
 {
 if(mas[i]>max)
 {
 max=mas[i];
 ch=i;
 }
 if(i==n)
 {
 ch=nom[j];
 }
 }
 }
  for(j=0;j<n;j++)
 {
 for(i=0;i<n;i++)
 {
 if(mas2[i]>max2)
 {
 max2=mas2[i];
 ch=i;
 }
 if(i==n)
 {
 ch=nom2[j];
 }
 }
 }


 getch();
 return 0;
 }
что прикажешь использовать компилятору в качестве итерационной переменной? прошлое ее значение? стандарт плюсов гласит, что область видимости переменных, описаных в условии цикла распространяется до конца цикла! ладно если у тебя компилятор старого стандарта, может тогда следовало описать i и j в самом начале программы?
пс. на ch естественно не ругается
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 06.10.2009, 23:11   #3
StudentPolitech
Форумчанин
 
Аватар для StudentPolitech
 
Регистрация: 21.11.2008
Сообщений: 400
По умолчанию

Чё такое, у меня только про CH пишет?
ЗЫ Не углядел, писал в универе, маленько оплошал
Винда, KIS 2010, книжка по С/С++, остальное неважно........
StudentPolitech вне форума Ответить с цитированием
Старый 06.10.2009, 23:13   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2StudentPolitech
ну было бы неплохо, если бы ты снизошел со своего небесного трона к жалким людишкам вроде меня и поведал бы мне, ничтожеству, какой у тебя компилятор.

хотя не, я догадаюсь. судя по conio у тебя виндовоз, а по древнему стилю времени жизни переменных в цикле - какая нить шестая студия. угадал?
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance

Последний раз редактировалось pproger; 06.10.2009 в 23:17.
pproger вне форума Ответить с цитированием
Старый 06.10.2009, 23:17   #5
StudentPolitech
Форумчанин
 
Аватар для StudentPolitech
 
Регистрация: 21.11.2008
Сообщений: 400
По умолчанию

Аля DOS, чёто он реально какую то глупость выдаёт, кстати в универе он тоже самое выдавал
Винда, KIS 2010, книжка по С/С++, остальное неважно........
StudentPolitech вне форума Ответить с цитированием
Старый 07.10.2009, 15:53   #6
mYziK
Пользователь
 
Регистрация: 18.09.2009
Сообщений: 38
По умолчанию

Цитата:
Почему пишет переменная ch не используется
Потому что она не используется. Принимает значение, но это значение нигде не задействовано (не выводится, не пишется в файл, не присваевается переменной, не задействованно в условиях/циклах, не учавствует в выражениях и т.д...)
mYziK вне форума Ответить с цитированием
Старый 07.10.2009, 16:19   #7
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2mYziK
иди проспись

Код:
#include<iostream>

using namespace std;

const int n = 10;

int main() {
    int max = 0, max2 = 0, ch = 0, mas[n], mas2[n], mas3[n], nom[n],nom2[n];

    cout << "vvedite chisla v massiv nomer 1" << endl;

    for (int i = 0; i < n; i++) {
        cin >> mas[n];
    }

    cout << "vvedite chisla v massiv nomer 2" << endl;
    
	for (int i = 0; i < n; i++) {
        cin >> mas2[n];
    }

    for (int j = 0; j < n; j++) {
        for (int i = 0; i < n; i++) {
            if (mas[i] > max) {
                max = mas[i];
                ch = i;
            }
            if (i == n) {
                ch = nom[j];
            }
        }
    }

    for (int j = 0; j < n; j++) {
        for (int i = 0; i < n; i++) {
            if (mas2[i] > max2) {
                max2 = mas2[i];
                ch = i;
            }
            if (i == n) {
                ch = nom2[j];
            }
        }
    }

    return 0;
}
пс. насчет ЗАЧЕМ она там юзается - отдельный разговор
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 07.10.2009, 17:17   #8
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
2mYziK
иди проспись
...
пс. насчет ЗАЧЕМ она там юзается - отдельный разговор
Если я правильно понял, то mYziK имел ввиду, что переменная ch везде используется только на запись. Значение переменной нигде не используется. Как знать, может на это сферический компилятор в вакууме и ругается. Ну может не нравится ему что в какую-то область памяти данные пишутся, но не читаются оттуда и потому считает это бессмысленным занятием и выдаёт warning. Лично у меня других предположений нет, но, в любом случае, компилятор не прав

ЗЫ. Можно и покультурнее к форумчанам обращаться. Человек всё же по теме написал и вполне логичное предположение сделал, а не чушь какую-нибудь оффтоповую, чтобы так вот грубо посылать его проспаться
pu4koff вне форума Ответить с цитированием
Старый 07.10.2009, 17:30   #9
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Компилирует он все это в Turbo C++ 3.11
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 07.10.2009, 19:11   #10
mYziK
Пользователь
 
Регистрация: 18.09.2009
Сообщений: 38
По умолчанию

Цитата:
Компилирует он все это в Turbo C++ 3.11
Если это действительно так, то сам сейчас проверил:
Код:
#include <iostream.h>

int main()
{
	int t;
	t = 5;
	for(int i=0;i<5;++i)
		cout << "Print\n";
	return 0;
}
Вот вывалившейся варнинг:
Код:
Warning NONAME00.CPP 11: 't' is assigned a value that is never used
Так же подобное в какой-то из студий встречал. На самом деле вполне логичное поведение компилятора, т.к. прогер мог забыть про эту переменную (большой код, куча других переменных, ну или вообще - не важно), а она болтается в стеке.

Цитата:
2mYziK
иди проспись
А читать умеешь?
Цитата:
Потому что она не используется. Принимает значение, но это значение нигде не задействовано
А топикстартеру - пиши плиз точное сообщение компилятора.

Последний раз редактировалось mYziK; 07.10.2009 в 20:46.
mYziK вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
c# ссылочная переменная hizahazahub Общие вопросы .NET 1 16.04.2009 20:53
Динамическая переменная kezman Общие вопросы C/C++ 1 29.07.2008 13:49
Переменная в № ячейки valerij Microsoft Office Excel 2 24.05.2008 18:58
Переменная не декрементируется Hypermaster Помощь студентам 10 19.04.2008 11:38