Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для nonamez123
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336

выводит неверный ответ

09.12.2010, 20:40. Показов 1375. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream.h>
#include <stdio.h>
const int n = 100;
 
int main (int argc, char * const argv[]) {
    int x;
    cout << "введите размер массива ";
    cin >> x;
    int mas[n];
    
    for (int i=0; i<x; i++) {
        cout << "введите "<<i+1<<" число";
        cin >>mas[i];
    }
    int y;
    for (int i=0; i<x; i++) {
        y=y+mas[i]-mas[i+1];
    }
    
    cout << y;
    return 0;
}
алгорит программы следующий 1-2+3-4+5-6+7-8+9-10, в ответе должно получиться -5, а выходит -1341930030
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.12.2010, 20:40
Ответы с готовыми решениями:

Программа выводит неверный ответ (дан массив структур, содержащий сведения об успеваемости студентов - вывести список неуспевающих студентов)
Задача: Дан массив структур, содержащий сведения об успеваемости по информатике группы из 25 студентов. Структура содержит следующие...

Написать программу, которая выводит пример на вычитание, запрашивает ответ пользователя, проверяет его и выводит сообщение о правильности
Написать программу, которая выводит пример на вычитание (в пределах 100), запрашивает ответ пользователя, проверяет его и выводит сообщение...

Почему выводит неверный результат?
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;locale.h&gt; #include &lt;stdlib.h&gt; using namespace std; int...

14
 Аватар для TheMachinist
246 / 178 / 47
Регистрация: 14.06.2010
Сообщений: 422
09.12.2010, 20:51
Ты игреку какое-нибудь значение присвой для начала
0
481 / 119 / 17
Регистрация: 30.09.2010
Сообщений: 473
09.12.2010, 20:57
Во-первых, y у тебя не статическая, а автоматическая переменная, нулем она автоматом не инициализируется, надо делать это явно.

Во-вторых, смену знака надо отслеживать как-то так:
C++
1
2
3
4
5
6
7
8
        int y = 0; int plus = 1;
        for (int i=0; i<x; i++) {
                if (plus)
                  y+=mas[i];
                else
                  y-=mas[i];
                plus=!plus;
        }
0
 Аватар для Reee
21 / 21 / 7
Регистрация: 21.09.2010
Сообщений: 65
09.12.2010, 21:05
Вот что я придумал
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
#include <iostream>
using namespace std;
const int n=100;
 
int main()
{
    int x=0,y=0;
 
    cout << "введите размер массива ";
    cin >> x;
    int mas[n];
        
    for (int i=0; i<x; i++) 
    {
        cout << "введите "<<i+1<<" число";
        cin >>mas[i];
    }
    for(int i=1; i<x; i++)
        if(i%2==0)
            y+=mas[i-1];
        else 
            y-=mas[i-1];
    cout<<y;
}
1
 Аватар для nonamez123
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336
09.12.2010, 21:36  [ТС]
я просто на паскале такое делал, там таких заморочек не было
0
481 / 119 / 17
Регистрация: 30.09.2010
Сообщений: 473
09.12.2010, 22:51
Цитата Сообщение от Reee Посмотреть сообщение
Вот что я придумал
Ну тогда уж:
C++
1
2
3
4
                if (!(i&1))
                        y+=mas[i-1];
                else 
                        y-=mas[i-1];


Добавлено через 5 минут
Цитата Сообщение от nonamez123 Посмотреть сообщение
я просто на паскале такое делал, там таких заморочек не было
Паскали бывают разные. То, что Турбо-Паскаль зачищает часть статических переменных нулями, это недокументированная возможность, и пользоваться ей не стоит.

А с учетом перемены знака полюбас та же заморочка должна быть на любом языке, так что не надо катить.
0
 Аватар для nonamez123
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336
09.12.2010, 22:59  [ТС]
Pascal
1
2
3
4
for i:= 1 to n do
begin
y:=y+x[i]-x[i+1];
end;
прекрастно работает

Добавлено через 5 минут
опять фигня, чёт бесить меня си начинает...
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
#include <iostream.h>
#include <stdio.h>
const int n=100;
 
int main (int argc, char * const argv[]) {
    // insert code here...
    int x;
cout << "введите размер массива ";
    cin >> x;
    int mas[n];
        
    for (int i=0; i<x; i++) 
        {
        cout << "введите "<<i+1<<" число";
        cin >>mas[i];
        }
    
    int y=0,j=0;
    for (int i=0; i<x; i++) {
        j++;
        y=y+(mas[i]*mas[x]);
        x=x-j;
    }
    cout << y;
    return 0;
}
вот такой алгоритм 1*10+2*9+3*8+4*7+5*6
0
 Аватар для Reee
21 / 21 / 7
Регистрация: 21.09.2010
Сообщений: 65
09.12.2010, 23:31
Будет работать если х четное.
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
#include <iostream>
using namespace std;
const int n=100;
 
int main()
{
    int x=0,y=0;
    int* s, *S;
 
    cout << "введите размер массива ";
    cin >> x;
    int mas[n];
        
    for (int i=0; i<x; i++) 
    {
        cout << "введите "<<i+1<<" число";
        cin >>mas[i];
    }
 
    s=&mas[0];
    S=&mas[x-1];
 
    for(int i=0; i<x/2; i++)
    {
     y+=*(s)**(S);
    s++;
    S--;
    }
    cout<<y;
}
1
481 / 119 / 17
Регистрация: 30.09.2010
Сообщений: 473
09.12.2010, 23:37
Цитата Сообщение от nonamez123 Посмотреть сообщение
Pascal
1
2
3
4
for i:= 1 to n do
  begin
    y:=y+x[i]-x[i+1];
  end;
прекрастно работает
Оно не только не работает, а еще и за пределы отведенной памяти обращается...

Цитата Сообщение от nonamez123 Посмотреть сообщение
чёт бесить меня си начинает...
0
 Аватар для nonamez123
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336
09.12.2010, 23:43  [ТС]
нет, оно работает нормально, там при вводе используется for i:= 1 to 2*n, что бы тут не выходило

Добавлено через 3 минуты
Цитата Сообщение от Reee Посмотреть сообщение
Будет работать если х четное.
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
#include <iostream>
using namespace std;
const int n=100;
 
int main()
{
    int x=0,y=0;
    int* s, *S;
 
    cout << "введите размер массива ";
    cin >> x;
    int mas[n];
        
    for (int i=0; i<x; i++) 
    {
        cout << "введите "<<i+1<<" число";
        cin >>mas[i];
    }
 
    s=&mas[0];
    S=&mas[x-1];
 
    for(int i=0; i<x/2; i++)
    {
     y+=*(s)**(S);
    s++;
    S--;
    }
    cout<<y;
}
как понять вот эту строчку y+=*(s)**(S);
y плюс равно умножить ?
0
481 / 119 / 17
Регистрация: 30.09.2010
Сообщений: 473
09.12.2010, 23:45
Цитата Сообщение от nonamez123 Посмотреть сообщение
нет, оно работает нормально, там при вводе используется for i:= 1 to 2*n, что бы тут не выходило
Все равно не будет - проверь на калькуляторе.
0
 Аватар для nonamez123
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336
09.12.2010, 23:49  [ТС]
Цитата Сообщение от Напильнег Посмотреть сообщение
Все равно не будет - проверь на калькуляторе.
ну значит ты круче моего препода.
0
481 / 119 / 17
Регистрация: 30.09.2010
Сообщений: 473
10.12.2010, 11:01
Это несомненно!
0
 Аватар для Reee
21 / 21 / 7
Регистрация: 21.09.2010
Сообщений: 65
10.12.2010, 19:03
Цитата Сообщение от nonamez123 Посмотреть сообщение
как понять вот эту строчку y+=*(s)**(S);
y плюс равно умножить ?
Вот так.
y=y+*(s) * *(S)
0
21 / 21 / 5
Регистрация: 14.06.2010
Сообщений: 108
10.12.2010, 19:14
В этой строке ошибка
C
1
 for (int i=0; i<x; i++) {
нужно
C
1
 for (int i=0; (i+1)<x; i++) {
т.к. при обращении к последнему элементу условие i < x в пределах, а вот i+1 уже равно х, что собственно и приводит к данной проблеме...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.12.2010, 19:14
Помогаю со студенческими работами здесь

Выводит неверный результат ln2=1-1/2+1/3-1/4
Здравствуйте, необходимо написать последовательный и параллельный код для подсчета ln2=1-1/2+1/3-1/4... Вот что получилось: #include...

Калькулятор выводит неверный результат
Изучаю С++ по Страуструпу. Дошел до следующей задачи(калькулятор) и &quot;буксую&quot;, не пойму в чем дело, код с книгой сверял несколько раз. ...

При значении больше 10 выводит неверный результат
При вводе чисел до 10, например 4 выводится результат 4 = 4.02725. Начина с 10 результат такой 10=10. Почему так ? #include...

Почему выводит неверный результат при вычислении произведения?
Еще 1 вопрос из разряда нубских: #include&lt;iostream&gt; #include&lt;cmath&gt; using namespace std; int main() { setlocale(0,...

Нахождение наибольшего общего делителя - почему выводит неверный итог?
Всем привет, что-то не могу понять:( Очень прошу помочь! int a, b; cin &gt;&gt; a &gt;&gt; b; while (b != 0) { a %= b; swap(a, b); } ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru