Форум программистов, компьютерный форум CyberForum.ru

Где подвох? - C++

Восстановить пароль Регистрация
 
egorikem
 Аватар для egorikem
7 / 7 / 1
Регистрация: 05.10.2010
Сообщений: 137
24.10.2010, 19:49     Где подвох? #1
Вот код пишет что z необьявлен!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdafx.h"
#include <iostream>
using namespace std;
int zvezda(int z)
{
    cout<<"Enter line size: ";
    cin>>z;
    return z;
}
int main()
{
    int i=0,w=0;
    w = zvezda(z);
    while (i<w)
    {
        i++;
        cout<<"*";
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2010, 19:49     Где подвох?
Посмотрите здесь:

Для матриц I=2P-E, где Е-единичная матрица,а Р=Р(n,n), проверить св-во I^2=Е.При помощи метода Гаусса решить СЛАУ Ix=y, где вектор состоит из единиц. C++
C++ в чем подвох?!
Где найти Двунаправленное кольцо? у кого есть такое? или есть ссылки где их можно найти? C++
GNU C++ где де ты где?!?! C++
C++ Вывести на экран количество слов где первая и последняя буквы одинаковы (не понимаю где ошибка)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
24.10.2010, 19:50     Где подвох? #2
egorikem, И где объявление z в main-е?
C++
1
2
3
4
5
6
7
8
9
10
int main()
{
        int i=0,w=0;
        w = zvezda(z);
        while (i<w)
        {
                i++;
                cout<<"*";
        }
}
egorikem
 Аватар для egorikem
7 / 7 / 1
Регистрация: 05.10.2010
Сообщений: 137
24.10.2010, 20:45  [ТС]     Где подвох? #3
Но он должен взять Z из функции!

Добавлено через 38 секунд
Спасибо усё работает!
hepr
 Аватар для hepr
60 / 32 / 5
Регистрация: 21.10.2010
Сообщений: 538
24.10.2010, 20:48     Где подвох? #4
Переменная локальна только там где она объявлена+функция никогда не может отправлять переменные, только их значения
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
24.10.2010, 20:51     Где подвох? #5
egorikem, вы понимаете, что передаёте z в функцию в качестве параметра? И тот z, который в итоге будет использоваться в функции, это совсем другой z. Если хотите изменять z в самой функции, используйте указатели или ссылки. А если даже и нет, то всё равно вы должны объявить z в main'е и передавать его в функцию.
egorikem
 Аватар для egorikem
7 / 7 / 1
Регистрация: 05.10.2010
Сообщений: 137
24.10.2010, 20:54  [ТС]     Где подвох? #6
Спасибо теперь я понял! А где здесь еррор?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include "stdafx.h"
#include <iostream>
using namespace std;
int mass(int arr[],int s)
{
    int i;
    cout<<"Enter mass size: ";
    cin>>s;
    return s;
    for (i=0;i<s;i++)
    {
        cout<<"Enter mass element: ";
        cin>>arr[i];
        return arr[i];
    }
}
int main()
{
    int arr[999];
    int s;
    int i;
    cout<<"Your mass: ";
    for (i=0;i<mass(s);i++)
    {
        cout<<mass(arr[i]);
    }
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
24.10.2010, 20:57     Где подвох? #7
egorikem,
C++
1
int mass(int arr[],int s)//Определение функции
C++
1
2
mass(s) //Вызов
mass(arr[i])//Вызов
Ошибку сами поймете?

C++
1
2
3
4
5
6
7
8
9
        cout<<"Enter mass size: ";
        cin>>s;
        return s;//Выйдет из функции здесь. Зачем остальное? оО
        for (i=0;i<s;i++)
        {
                cout<<"Enter mass element: ";
                cin>>arr[i];
                return arr[i];
        }
egorikem
 Аватар для egorikem
7 / 7 / 1
Регистрация: 05.10.2010
Сообщений: 137
24.10.2010, 21:15  [ТС]     Где подвох? #8
Не понял О_о
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
24.10.2010, 21:19     Где подвох? #9
egorikem, ...

Книжки почитайте. Ну такие вопросы задавать - уже не катит вообще...

Объясните мне смысл своей программы...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include "stdafx.h"
#include <iostream>
using namespace std;
int mass(int arr[],int s)//Отлично. Функция принимает массив и число
{
        int i;
        cout<<"Enter mass size: ";
        cin>>s;//Вводим размер массива
        return s;//Возвращаем его. Функция прерывается. Дальше не идет
        //Всего что после return в этой функции для компилятора не существует
        //Но даже если бы существовало. Что за бред?
        //Цикл от 0 до s
        for (i=0;i<s;i++)
        {
                cout<<"Enter mass element: ";
                //Вводим элемент...
                cin>>arr[i];
                //И возвращаем его! То есть переписываем всегда 1-ый элемент. Шик
                return arr[i];
        }
}
int main()
{
        int arr[999];//Некорректно но фиг с ним
        int s;
        int i;
        cout<<"Your mass: ";
        for (i=0;i<mass(s);i++)//Вызываем функцию... КАК!?
        {
                cout<<mass(arr[i]);//Отлично просто.
                //В функции mass - цикл. В итоге по сути, если бы все работало
                //Вывелся бы массив 10 раз. Хотя нет. Такая передача даже не сработала бы.
        }
}
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
24.10.2010, 21:22     Где подвох? #10
Вы функцию объявили, которая принимает два параметра. А вызываете её для каждого параметра по-отдельности. Т.е. каждый вызов функции - попытка вызвать функцию с одним параметром. Такой перегрузки у вас нет, поэтому компилятор ругается. Вызывайте так:
mass(arr, s)
Код не смотрел, но есть подозрение, что логика там тоже нарушена.

Добавлено через 1 минуту
Lavroff, за комменты - зачОт)))
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
24.10.2010, 21:23     Где подвох? #11
А вот как должно быть

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "stdafx.h"
#include <iostream>
using namespace std;
void mass(int arr[],int* s)//Отлично. Функция принимает массив и число
{
        int i;
        cout<<"Enter mass size: ";
        cin>>*s;//Вводим размер массива
        for (i=0;i<*s;i++)
        {
                cout<<"Enter mass element: ";
                //Вводим элемент...
                cin>>arr[i];
        }
}
int main()
{
        int arr[999];//Некорректно но фиг с ним
        int s;
        int i;
        cout<<"Your mass: ";
        mass(arr, &s);//Корректный вызов функции
        for (i=0;i<s;i++)
        {
                cout<<arr[i]<<' ';
        }
        cout<<'\n';
}
egorikem
 Аватар для egorikem
7 / 7 / 1
Регистрация: 05.10.2010
Сообщений: 137
24.10.2010, 21:30  [ТС]     Где подвох? #12
Люди объясните дебилу, где ошибка???? Не какая а где и как правильно!
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
24.10.2010, 21:33     Где подвох? #13
Вам написали уже, где у вас ошибки. Легче написать, где их нет.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
24.10.2010, 21:34     Где подвох? #14
egorikem, Елки палки... Комменты прочитать тяжело?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include "stdafx.h"
#include <iostream>
using namespace std;
int mass(int arr[],int s)//Отлично. Функция принимает массив и число
{
        int i;
        cout<<"Enter mass size: ";
        cin>>s;//Вводим размер массива
        return s;//Возвращаем его. Функция прерывается. Дальше не идет. Логическая ошибка
        //Всего что после return в этой функции для компилятора не существует
        //Но даже если бы существовало. Что за бред?
        //Цикл от 0 до s
        for (i=0;i<s;i++)
        {
                cout<<"Enter mass element: ";
                //Вводим элемент...
                cin>>arr[i];
                //И возвращаем его! То есть переписываем всегда 1-ый элемент. Шик.
                //Логическая ошибка
                return arr[i];
        }
}
int main()
{
        int arr[999];//Некорректно но фиг с ним
        int s;
        int i;
        cout<<"Your mass: ";
        for (i=0;i<mass(s);i++)//Вызываем функцию... КАК!? Неправильный вызов функции+логическая ошибка
        {
                cout<<mass(arr[i]);//Отлично просто. Неправильный вызов функции + логическая ошибка
                //В функции mass - цикл. В итоге по сути, если бы все работало
                //Вывелся бы массив 10 раз. Хотя нет. Такая передача даже не сработала бы.
        }
}
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 01.07.2010
Сообщений: 281
24.10.2010, 21:42     Где подвох? #15
Как функцию описали, так её и вызывают. Функции передаются аргументы. Компилятор додумывать за тебя ничё не будет. Он выдаст ошибку. Рекомендую почитать книги по C++.
egorikem
 Аватар для egorikem
7 / 7 / 1
Регистрация: 05.10.2010
Сообщений: 137
24.10.2010, 22:07  [ТС]     Где подвох? #16
Я не понимаю твои коменты!!!!
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
24.10.2010, 22:08     Где подвох? #17
egorikem, Мда. А я ведь на русском пишу. Совет: открой какую-нибудь книгу по С++ и прочти хоть что-нибудь.
egorikem
 Аватар для egorikem
7 / 7 / 1
Регистрация: 05.10.2010
Сообщений: 137
24.10.2010, 22:14  [ТС]     Где подвох? #18
Ландо я дебил сорри что беспокою....
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
24.10.2010, 22:15     Где подвох? #19
egorikem, Я не говорил, что вы дебил. Я все понимаю. Сам был совсем начинающим около года назад. Но и вы поймите. Нервов не на все хватает. А когда 2-3 раза кидаешь код с комментариями, а человек их не понимает... Ну. Тут поможет только хорошая книжка.
Извиняюсь, если задел.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2010, 22:16     Где подвох?
Еще ссылки по теме:

C++ Циклический сдвиг, где подвох?
C++ Подскажите, где может быть ошибка (структуры)? (скорее всего где-то амперсенд нужен, все вроде проверил)
Объясните, где задается функция, где расчитывается и как она называется C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
egorikem
 Аватар для egorikem
7 / 7 / 1
Регистрация: 05.10.2010
Сообщений: 137
24.10.2010, 22:16  [ТС]     Где подвох? #20
Да не... наоборот спасибо! За урок =)
Yandex
Объявления
24.10.2010, 22:16     Где подвох?
Ответ Создать тему
Опции темы

Текущее время: 14:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru