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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
lordPS
0 / 0 / 0
Регистрация: 07.05.2012
Сообщений: 55
#1

Не могу найти ошибку в исходнике. - C++

28.05.2012, 22:38. Просмотров 1055. Ответов 5
Метки нет (Все метки)

Привет програмёры.Я учусь програмировать на С++ и для закрепления начала изучения функций и массивов написал небольшую програмку massiv, и она компилируется, но работает неправильно(после ввода чисел работа почемуто обрывается.Не могу найти ошибку.Вот текст програмки:

#include<cstdio>
#include<cstdlib>
#include<iostream>

using namespace std;


int Proizved(int mass[], int velechina);
void tabl(int mass[], int velechina);

int main(int nNumberofArgs, char*pszArgs[])
{
int accumulator;
int massiv[100];

int nom;

for(nom=0;nom < 100;nom++)
{
int chislo;
TCHAR * s1 = "Введите число: ";
TCHAR * s2 = new TCHAR(strlen(s1)+1);
CharToOem(s1,s2);
cout << s2;
cin >> chislo;
if(chislo < 0)
{
break;
}
massiv[nom]=chislo;
}
tabl(massiv,nom);

cout << "Proizvedenie:" <<Proizved(massiv,nom) << endl;

system("PAUSE");
return 0;
}


void tabl(int mass[], int velechina)
{
TCHAR * s3 = "В массиве находятся числа:";
TCHAR * s4 = new TCHAR(strlen(s3)+1);
CharToOem(s3, s4);
cout << s4;
for(int i=0;i < velechina; i++)
{
cout.width(3);
cout << i << ":" << mass[i] << endl;
}
cout << endl;
}


int Proizved(int mass[], int velechina)
{
int accumulator = 0;

for(int i = 0; i < velechina;i++)
{
accumulator += mass[i];
}
return accumulator;
}
Коментарии не - писал на 100% уверен что всё поймёте.Прошу с меня не ржать-всётаки только начал изучать С++ и 14 лет мне.
P.S: интереса ради пожалуйста напишите во сколько начали учиться програмировать и восколько
професионально програмировать.
GGGGGGGG-Unit
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2012, 22:38     Не могу найти ошибку в исходнике.
Посмотрите здесь:

Не могу найти ошибку... - C++
минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы. Я ввожу матрицу 1 2 3 4 5 6 7 8 9, т.е. минимум...

Не могу найти ошибку! - C++
Только-только начал работать с функциями и не могу понять, почему в моей игре(кидаешь с компьютером кубик) и у пользователя и у программы...

Не могу найти ошибку - C++
Не получается вывести сформированную матрицу. Выводит с каким-то мусором. #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include...

Не могу найти ошибку - C++
Добрый день. Имеется задача: Написал код: Но вычисляет он неверно. Объясните, пожалуйста, в чем ошибка.

Не могу найти ошибку - C++
Условие задачи: Написать функцию решения квадратного уравнения. Помогите найти ошибку: #include &lt;iostream.h&gt; int sqvare (int a)...

не могу найти ошибку - C++
Код програмы: #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;conio.h&gt; using namespace std; const int N=3; int main() ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
boombastik
7 / 7 / 0
Регистрация: 13.02.2007
Сообщений: 1,255
29.05.2012, 03:25     Не могу найти ошибку в исходнике. #2
Попробовал выполнить программу, действительно валится при выводе массива введенных чисел.

Небольшие эксперименты показали, что проблема в выводе строки в std::cout, конвертированной при помощи CharToOem. Если строка превышает длинной 23 символа, то после функции CharToOem и вывода строки в std::cout последний становится не пригоден для использования.

Поздно уже думать сегодня ^_^ Поэтому, в качестве временного решения могу порекомендовать уменьшить сообщение до 23 символов или писать по-английски и не используй CharToOem вообще.

Удачи,
Владимир
arist
0 / 0 / 0
Регистрация: 14.02.2011
Сообщений: 100
29.05.2012, 08:21     Не могу найти ошибку в исходнике. #3
вместо
TCHAR * s2 = new TCHAR(strlen(s1)+1);
должно быть
TCHAR * s2 = new TCHAR[strlen(s1)+1];

В первом случае выделяется память размером sizeof(TCHAR) и инициализированная значением strlen(s1)+1, а во втором (то, что нужно) выделяется память размером sizeof(TCHAR) * (strlen(s1)+1) и не инициализируется.

на счёт s4 - тоже самое.
lordPS
0 / 0 / 0
Регистрация: 07.05.2012
Сообщений: 55
29.05.2012, 18:56  [ТС]     Не могу найти ошибку в исходнике. #4
Спасибо большое!Пограмка заработала.В принципе оба совета подходят но я
воспользовался вторым.Ещё раз спасибо, с меня пивоP.S:жаль на последний вопрос не ответили, создам отдельную тему в FLAME.
boombastik
7 / 7 / 0
Регистрация: 13.02.2007
Сообщений: 1,255
30.05.2012, 12:20     Не могу найти ошибку в исходнике. #5
arist абсолютно прав, забудь мой предыдущий ответ, я чей-то просмотрел очевидную ошибку 23 символа тут ни при чем. Массивы нужно создавать как массивы, иначе программа начинает использовать область памяти выходящую за рамки выделенной.

Удачи,
Владимир
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2012, 15:36     Не могу найти ошибку в исходнике.
Еще ссылки по теме:

не могу найти ошибку! - C++
почему в typePlane вместо значения, которое вводит пользователь, выводит какое-то большое значение из цифр и букв? #include&lt;iostream&gt; ...

Не могу найти ошибку - C++
Вот моя задача и к ней я должен придумать обработку исключений Поле first - положительное целое число, цена товара, поле second -...

Не могу найти ошибку - C++
в общем у меня есть 8 битный бмп файл я его считываю и записываю в другой бмп файл вроде по алгоритму все правильно , толька картинка все...

Не могу найти ошибку - C++
Осуществить циклический сдвиг квадратной матрицы размерности NxN вправо на N элементов таким образом: элементы 1-й строки сдвигаются в...


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

Или воспользуйтесь поиском по форуму:
lordPS
0 / 0 / 0
Регистрация: 07.05.2012
Сообщений: 55
30.05.2012, 15:36  [ТС]     Не могу найти ошибку в исходнике. #6
ОК.
Yandex
Объявления
30.05.2012, 15:36     Не могу найти ошибку в исходнике.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru