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

Где ошибка? не очень разбираюсь в С++ - C++

Восстановить пароль Регистрация
 
3xter
0 / 0 / 0
Регистрация: 28.09.2011
Сообщений: 34
28.09.2011, 21:18     Где ошибка? не очень разбираюсь в С++ #1
из входного потока найти и вывести на экран все числа палиндромы
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/*
 * laba1.cpp
 *
 *  Created on: 22.09.2011
 *      Author: k312321
 */ 
 
#include <iostream>
using namespace std;
const int N=100;
int input (int a[], int m);
void output (int a[], int m);
void sortnout (int a[],int m);
void insert (int a[], int m, int b);
int main ()
{
    int mass[N];
    int m;
    m=input(mas,N);
    cout<<"Source arrey: "<<endl;
    output (mas,m);
    sortnout (mas,m);
    cout<<"sorted arrey: "<<endl;
    output (mas,m);
    return 0;
}
 int sortnout(int a[],int m)  {
int b[100],i,k;
k=0;
for(i=0;i<m;i++)
{ k=a;b=0;
    while(k!=0) 
    {b=(b*10+(k%10));
    k=((k-(k%10))/10); }}
   for(i=0;i<m;i++)
   if (a==b) cout<<a<<' ';
   }
 
int input (int a[], int m)
{
    int n;
    const char*pr=" ";
    do {
        cout<<pr<<endl;
        cout<<"enter int: ";
        cin>>n;
        pr="wrong!";
    } while (n<=0||n>m);
    cout<<"enter numbers"<<endl;
    for (int i=0; i<n; ++i)
        cin>>a[i];
    return n;
}
 
int input (int &a)
{
    while (cin>>a, cin.fail())
        if (cin.eof() || cin.bad())
            return -1;
    cin.clear();
    cin.ignore();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2011, 21:18     Где ошибка? не очень разбираюсь в С++
Посмотрите здесь:

Структуры.Не разбираюсь в структурах!!!Немагу сделать програмку!((( C++
Разбираюсь с md5 C++
C++ Разбираюсь с программой
Разбираюсь с функциями C++
C++ Очень нужен совет где найти ошибки в программе
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
viktorrrr
42 / 42 / 1
Регистрация: 11.02.2010
Сообщений: 358
28.09.2011, 21:24     Где ошибка? не очень разбираюсь в С++ #2
Код отформатируйте, пожалуйста)

Добавлено через 1 минуту
Цитата Сообщение от 3xter Посмотреть сообщение
/*int input (int &a)
Не здесь ошибка?. Будто хотел заккоментировать код)
3xter
0 / 0 / 0
Регистрация: 28.09.2011
Сообщений: 34
28.09.2011, 21:28  [ТС]     Где ошибка? не очень разбираюсь в С++ #3
ой) опечатка) но проблема не здесь)
viktorrrr
42 / 42 / 1
Регистрация: 11.02.2010
Сообщений: 358
28.09.2011, 21:48     Где ошибка? не очень разбираюсь в С++ #4
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
using namespace std;
const int N=100;
int input (int a[], int m);
void output (int a[], int m);
void sortnout (int a[],int m);
void insert (int a[], int m, int b);
int main ()
{
    int mass[N];
    int m;
    m=input(mass,N);   // Была ошибка в имени массива
    cout<<"Source arrey: "<<endl;
    output (mass,m);  //Та же фигня и далее тоже
    sortnout (mass,m);
    cout<<"sorted arrey: "<<endl;
    output (mass,m);
    return 0;
}
 void sortnout(int a[],int m)  {  // не должно возвращать значение 
int b[100],i,k;
k=0;
for(i=0;i<m;i++)
{ k=a;b=0;                      // Каким образом целочисленной переменной присваиваешь значение массива, который даже не поучаствовал в процессе?
    while(k!=0) 
    {b=(b*10+(k%10));
    k=((k-(k%10))/10); }}
   for(i=0;i<m;i++)
   if (a==b) cout<<a<<' ';
   }
 
int input (int a[], int m)
{
    int n;
    const char *pr=" ";
    do {
        cout<<pr<<endl;
        cout<<"enter int: ";
        cin>>n;
        pr="wrong!";
    } while (n<=0||n>m);
    cout<<"enter numbers"<<endl;
    for (int i=0; i<n; ++i)
        cin>>a[i];
    return n;
}
 
int input (int &a)  
{
    while (cin>>a, cin.fail())
        if (cin.eof() || cin.bad())
            return -1;
    cin.clear();
    cin.ignore();
    return 0;
}
Пару синтаксических ошибок исправил. Но этот код полная ерунда) Откуда скопировал? Не все функции использвуются. И много че еще.
удаляй это все и пиши с нуля/)))
3xter
0 / 0 / 0
Регистрация: 28.09.2011
Сообщений: 34
28.09.2011, 22:01  [ТС]     Где ошибка? не очень разбираюсь в С++ #5
я же говорю что очень плохо знаю язык)
-=ЮрА=-
Заблокирован
Автор FAQ
28.09.2011, 22:07     Где ошибка? не очень разбираюсь в С++ #6
Цитата Сообщение от 3xter Посмотреть сообщение
output (mas,m);
mas не соответсвует имени
Цитата Сообщение от 3xter Посмотреть сообщение
int mass[N];
- это раз

Цитата Сообщение от 3xter Посмотреть сообщение
void sortnout (int a[],int m);
- заголовок тип void прототип уже int
Цитата Сообщение от 3xter Посмотреть сообщение
int sortnout(int a[],int m)
- это два и три (от компилятора 2 ерора - оверлоад и редифинишн)



Цитата Сообщение от 3xter Посмотреть сообщение
k=a;
- как переменная может равняься массива а???
Цитата Сообщение от 3xter Посмотреть сообщение
int a[]
- это четыри (наверно а[i])

Цитата Сообщение от 3xter Посмотреть сообщение
int b[100]
- массив и приравниваем константе 0
Цитата Сообщение от 3xter Посмотреть сообщение
b=0;
- эт 5-ть

Цитата Сообщение от 3xter Посмотреть сообщение
b=(b*10+(k%10)
- массивы не перемножим не перегрузив * (думаю тут b[i] подразумевался) - это 6-ть

И наконец fatal error C1071: unexpected end of file found in comment
Error executing cl.exe. - наверное потому что нет прототипов

Цитата Сообщение от 3xter Посмотреть сообщение
void output (int a[], int m);
Цитата Сообщение от 3xter Посмотреть сообщение
void insert (int a[], int m, int b);
- это 7-мь

Что хоть алгоритм делать должен???

Добавлено через 47 секунд
Цитата Сообщение от viktorrrr Посмотреть сообщение
const char *pr=" ";
Цитата Сообщение от viktorrrr Посмотреть сообщение
pr="wrong!";
viktorrrr, это как вам такое удалось откомпилировать???

Добавлено через 45 секунд
Цитата Сообщение от viktorrrr Посмотреть сообщение
{b=(b*10+(k%10));
Цитата Сообщение от viktorrrr Посмотреть сообщение
b[100]
ну ну

Добавлено через 3 минуты
Вот это компилиться но о коректной работе не идётся, не хватает прототипов функций + многострочный коментарий /* десь
Цитата Сообщение от 3xter Посмотреть сообщение
/*int input (int &a)
не окончен */!
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <iostream>
using namespace std;
 
const int N=100;
 
int input (int a[], int m);
//void output (int a[], int m);
void sortnout (int a[],int m);
//void insert (int a[], int m, int b);
 
int main ()
{
    int mass[N];
    int m;
    m=input(mass,N);
    cout<<"Source arrey: "<<endl;
    //output (mass,m);
    //sortnout (mass,m);
    cout<<"sorted arrey: "<<endl;
    //output (mass,m);
    return 0;
}
 
void sortnout(int a[],int m) 
{
    int b[100],i,k = 0;
    for(i=0;i<m;i++)
    { 
        k=a[i];
        b[i]=0;
        while(k!=0) 
        {
            b[i]=(b[i]*10+(k%10));
            k=((k-(k%10))/10); 
        }
    }
    for(i=0;i<m;i++)
    if (a==b) 
        cout<<a<<' ';
}
 
int input (int a[], int m)
{
    int n;
    char*pr=" ";
    do 
    {
        cout<<pr<<endl;
        cout<<"enter int: ";
        cin>>n;
        pr="wrong!";
    } 
    while (n<=0||n>m);
    cout<<"enter numbers"<<endl;
    for (int i=0; i<n; ++i)
        cin>>a[i];
    return n;
}
 
/*int input (int &a)
{
while (cin>>a, cin.fail())
if (cin.eof() || cin.bad())
return -1;
cin.clear();
cin.ignore();
return 0;
}*/
3xter
0 / 0 / 0
Регистрация: 28.09.2011
Сообщений: 34
28.09.2011, 22:09  [ТС]     Где ошибка? не очень разбираюсь в С++ #7
короче мне репетитор нужен всяко... бесит это непонимание! Шилдта читаю, но все равно тупой ><
viktorrrr
42 / 42 / 1
Регистрация: 11.02.2010
Сообщений: 358
28.09.2011, 22:11     Где ошибка? не очень разбираюсь в С++ #8
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
viktorrrr, это как вам такое удалось откомпилировать???
В том то и дело, что не удалось))). Вот это количество ошибок, которые вы указали я тоже заметил, поэтому дальше не стал разбирать). Кстати, еще раз спасибо за оказанную ранее помощь)
-=ЮрА=-
Заблокирован
Автор FAQ
28.09.2011, 22:23     Где ошибка? не очень разбираюсь в С++ #9
3xter, опишите что должен делать ваш алгоритм, напишу код с пояснениями, поняное дело с нуля редко у кого хоть что то выходит
3xter
0 / 0 / 0
Регистрация: 28.09.2011
Сообщений: 34
28.09.2011, 22:46  [ТС]     Где ошибка? не очень разбираюсь в С++ #10
-=ЮрА=-, из входного потока вводится последовательность целых чисел. Количество чисел не превышает 100. Сформировать новую последовательность элементы которой являются числа палиндромы и вывести на экран)
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
28.09.2011, 22:53     Где ошибка? не очень разбираюсь в С++ #11
Попробуйте другую книгу, например, Дейтелов "Как программировать на С++". Может по этой книге будет более понятно.
3xter
0 / 0 / 0
Регистрация: 28.09.2011
Сообщений: 34
29.09.2011, 00:23  [ТС]     Где ошибка? не очень разбираюсь в С++ #12
ну не могу я сделать...(
-=ЮрА=-
Заблокирован
Автор FAQ
29.09.2011, 10:04     Где ошибка? не очень разбираюсь в С++ #13
Цитата Сообщение от 3xter Посмотреть сообщение
-=ЮрА=-, из входного потока вводится последовательность целых чисел. Количество чисел не превышает 100. Сформировать новую последовательность элементы которой являются числа палиндромы и вывести на экран)
- вот и весь код
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <iostream>
#include <cstdlib>
#include <conio.h>
 
using namespace std;
 
bool ispalindrom(int num);
 
int main()
{
    int *a,*b,i,j,n;
    do
    {
        std::cout<<"Enter num elements : ";
        std::cin>>n;        
        a = new int[n];
        b = new int[n];//Впринципе все числа могут быть палиндромами
        std::cout<<"\tImput sequence\r\n";
        for(i = 0; i < n; i++)
        {
            std::cout<<"a["<<i + 1<<"] = ";
            std::cin>>a[i];
        }
        std::cout<<"\tSee palindroms\r\n";
        for(i = 0, j = 0; i < n; i++)
        {
            if(ispalindrom(a[i]))
            {
                std::cout<<(b[j] = a[i])<<" ";
                j++;//вконце цикла здесь накопиться число элементов - 1
            }
        }
        delete [] a;
        delete [] b;
        std::cout<<"\r\nPress Y for new input\r\n";
    }
    while(toupper(getch()) == 'Y');
}
 
bool ispalindrom(int num)
{
    bool ret = true;
    int nDigits = 1;
    int buf = num;
    while(0 < (buf /= 10))
        nDigits++;//Подсчёт числа разрядов числа
    int * arr = new int[nDigits];
    //запишем разряды числа в массив
    for(int i = 0; i < nDigits; i++, num /= 10)
        arr[i] = (num % 10);
    //сравниваем части числа
    for(i = 0; i < nDigits/2; i++)
    {
        if(arr[i] != arr[nDigits - i - 1])
            ret = false;
        if(!ret)//остановим цикл сразуже если зеркальные разряды не равны
            break;
    }
    delete [] arr;
    return ret;
}
Вывод в консоль
Enter num elements : 5
Imput sequence
a[1] = 1122
a[2] = 1221
a[3] = 3569
a[4] = 4554
a[5] = 1148
See palindroms
1221 4554
Press Y for new input

PS:Под палиндромом понимал числа вида АВВА АВССВА и т.д.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
29.09.2011, 11:36     Где ошибка? не очень разбираюсь в С++ #14
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <windows.h>
#include <iostream> // include definition of class Time from Time.h
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
using namespace std;
 
//Эта функция проверяет, палиндром число или нет
bool pal_ili_net (int);
 
 
int main (){
 SetConsoleCP (1251);
 SetConsoleOutputCP (1251);
    
 int chislo;
 
 int i, j, n;
 i= j= 0;    
 int palindromi [100];
 
 cout<<"Введи количество элементов не больше 100"<< endl;
 cin>>n;            
 cout<<"Числа теперь вводи"<< endl;
 
 
 while (i++< n) {
  cin>> chislo;
  if (pal_ili_net (chislo))
   palindromi [j++]= chislo;
 }
 
 for (int i= 0; i< j; i++)
  cout << palindromi [i]<< endl;
 getchar ();
 return 0; 
} 
 
////////////////////////////////////////////////////////////////////////////
 
bool pal_ili_net (int chislo) {
 char str [20];
 
 //Кстати, base не мешало бы указать в условии. Придираюсь!
 //в строку число перегнали
 itoa (chislo, str, 10);
 
 //проверили её на пилиндромность
 int i= 0; 
 int j= (strlen(str)- 1);
 for (;i<=j;i++, j--)
  if (str[i]!=str[j])
   break;
 
 //чё надо возвенули
 if (i< j)
  return false;
 return true; 
};
ПРедложенное тестирование пройдено удачно, тестируй ещё, неудачные результаты сюда.

Добавлено через 1 минуту
Кстати, шеф, на будующее. Озаглавливай тему: "проверить число на палиндромность", как-то так.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2011, 21:06     Где ошибка? не очень разбираюсь в С++
Еще ссылки по теме:

C++ очень очень странная ошибка
C++ знаю что элементарно, но я пока не очень в с++ разбираюсь(
C++ Странная ошибка при компиляции очень очень большой проги ,,boomerang,,

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

Или воспользуйтесь поиском по форуму:
3xter
0 / 0 / 0
Регистрация: 28.09.2011
Сообщений: 34
29.09.2011, 21:06  [ТС]     Где ошибка? не очень разбираюсь в С++ #15
Спасибо!!!!
Yandex
Объявления
29.09.2011, 21:06     Где ошибка? не очень разбираюсь в С++
Ответ Создать тему
Опции темы

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