Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
1 / 1 / 1
Регистрация: 24.09.2013
Сообщений: 140
1

При работе с программой выдает не результат, а какие то непонятные символы

08.11.2014, 19:09. Просмотров 1093. Ответов 10
Метки нет (Все метки)

Вот скриншот:

При работе с программой выдает не результат, а какие то непонятные символы


Собственно что это и как убрать ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.11.2014, 19:09
Ответы с готовыми решениями:

Почему при попытки считывания выдаёт какие-то непонятные символы, а не те, которые требовались?
#include <cstdio> #include <iostream> using std::cout; using std::cin; using std::endl; int...

Строки (добавляет какие-то непонятные символы)
Есть функция, которая возвращает строку. char *create_string(int Q1, int Q2, int Q3, int S1, int...

При попытке открыть код интернет-страницы выдает непонятные символы вместо русских букв
При попытке открыть код интернет-страницы выдает непонятные символы вместо русских букв. Как можно...

какие то непонятные символы
Hitachi HDT725032VLA360 ATA Device при загрузке выдаёт непонятные символы.Как с этим...

10
46 / 41 / 20
Регистрация: 17.03.2014
Сообщений: 131
08.11.2014, 19:15 2
Исходник в студию!
0
1 / 1 / 1
Регистрация: 24.09.2013
Сообщений: 140
08.11.2014, 19:22  [ТС] 3
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
69
70
71
72
73
#include <iostream>
#include <stdlib.h>
using namespace std;
class Zayavka {
char *nomeravtobysa, *FIO, *nomermarshryta, *park;
public:
Zayavka() {
nomeravtobysa = "73";
FIO = "Yakov4ykDima";
nomermarshryta = "198";
park = "da";
}
Zayavka(char *nomeravtobysa1, char *FIO1, char *nomermarshryta1, char *park1) {
nomeravtobysa = nomeravtobysa1;
FIO = FIO1;
nomermarshryta = nomermarshryta1;
park = park1;
}
void GetInfo(char *a0, char *a1, char *a2, char *a3) {
nomeravtobysa = a0;
FIO = a1;
nomermarshryta = a2;
park = a3;
}
void writeDat() {
cout << nomeravtobysa << " " << FIO << " " << nomermarshryta << " " << park <<endl;
}
void SrchnShow(char *a3, char *num)
 {
    char number;
    number=*num;
        if (a3=="da")
            cout<< "Avtobys #   " <<number<<"  v parke"<<endl;
        else cout<<"Error"<<endl;
}
};
void main() {
int a;
int n=1;
char *t1;
char *num;
a=1;
Zayavka *lib = new Zayavka[n];
while (a!=0) {
cout << "Rabota so spiskom:"<<endl;
cout << "1. Vivesti v vide spiska.\n";
cout << "2. Dobavit avtobys. \n";
cout << "3. Vivod avtobysov kotorie v parke:  \n";
cout << "0. Vixod. \n";
cin >> a;
if (a == 1) {
for (int i = 1; i< n; i++)
lib[i].writeDat();
}
if (a == 2) {
cout << "Vvedite dannie: nomer_avtobysa, FIO, nomer_marshryta, V parke(Y/N)? ):" << endl;
char  *a0 = new char[20], *a1 = new char[20], *a2 = new char[20], *a3 = new char[20];
cin >> a0 >> a1 >> a2 >> a3;
lib[n++].GetInfo(a0,a1,a2,a3);
num=a1;
delete  a1;
delete  a2;
delete  a3;
}
if (a == 3) {
t1="da";
for (int i = 1; i< n; i++)
{
lib[i].SrchnShow(t1,num);
}
}
}
}
0
С чаем беда...
Эксперт CЭксперт С++
8280 / 4054 / 1114
Регистрация: 18.10.2014
Сообщений: 8,749
08.11.2014, 19:34 4
Цитата Сообщение от Revolver19931 Посмотреть сообщение
Вот скриншот:
Ну так при вызове 'SrchnShow'

C++
1
2
3
4
for (int i = 1; i< n; i++)
{
  lib[i].SrchnShow(t1,num);
}
в него передается некий загадочный указатель 'num', который в этот момент содержит вообще непонятно что. Вот первый символ этого "непонятно чего" вы и печатаете на экране.

Единственное место в программе, где указателю 'num' назначается хоть какой-то значение, это

C++
1
2
3
4
...
num=a1;
delete  a1;
...
причем, как видите, память тут же освобождается и 'num' остается указывать "в никуда".

Другими словами, что вы написали - то и получилось. Это у вас надо спрашивать: что это за 'num', почему он всегда содержит мусор и зачем вы этот мусор пытаетесь печатать?
0
1 / 1 / 1
Регистрация: 24.09.2013
Сообщений: 140
08.11.2014, 20:24  [ТС] 5
Мне нужно в переменную num занести переменную a0(я перепутал a0 и a1), потом вывести ее если выполняется некое условие, но оно мне выводит какое то непонятное значение..., помогите разобраться!

Добавлено через 23 минуты
Как правильно произвести сравнение какой то переменной со словом ?

Мой код

C++
1
2
3
4
5
6
7
8
void SrchnShow(char *a3, char *num)
 {
    char number;
    number=*num;
        if (a3=="da")
            cout<< "Avtobys #   " <<number<<"  v parke"<<endl;
        else cout<<"Error"<<endl;
}
Не работает, он выводит все подряд
0
46 / 41 / 20
Регистрация: 17.03.2014
Сообщений: 131
08.11.2014, 20:29 6
Насколько я смог разобраться в Вашем коде, пришел к следующему выводу: Вам нужно думать не о том, какие аргументы отправить в функцию void SrchnShow(). По факту аргументы ей вообще не нужны. У Вас есть класс с полями данных, в которых, содержатся значения номера автобуса, маршрута и проч. В нем же определены несколько конструкторов и метод get для установления значений этих полей данных.
C++
1
2
3
4
5
6
7
8
9
class Zayavka {
char *nomeravtobysa, *FIO, *nomermarshryta, *park;
public:
Zayavka() {
nomeravtobysa = "73";
FIO = "Yakov4ykDima";
nomermarshryta = "198";
park = "da";
}
А вот функция void SrchnShow() принимает в качестве аргументов какие-то сторонние переменные из тела программы. Получается, что выводится информация не о членах класса, а о каком-то стороннем мусоре:
C++
1
2
3
4
5
6
7
8
void SrchnShow(char *a3, char *num)
 {
    char number;
    number=*num;
        if (a3=="da")
            cout<< "Avtobys #   " <<number<<"  v parke"<<endl;
        else cout<<"Error"<<endl;
}
0
1 / 1 / 1
Регистрация: 24.09.2013
Сообщений: 140
08.11.2014, 20:42  [ТС] 7
Если я делаю так:

C++
1
2
3
4
5
6
7
void SrchnShow()
 {
    
        if (park == "da")
            cout<< "Avtobys #   " <<nomeravtobysa<<" naxoditsa   v parke"<<endl;
        else cout<<"Error"<<endl; 
}
Мне сразу выводит Эрор, т.е. она не прогоняет проверку.

Как поправить код, что бы проходило сравнение переменной со словом "da" и выводило другую переменную когда они равны ?
0
Эксперт PHP
4443 / 3619 / 1520
Регистрация: 24.04.2014
Сообщений: 10,665
08.11.2014, 20:48 8
Revolver19931, сравнивать строки в стиле C через strcmp
И так делать не надо:
Цитата Сообщение от Revolver19931 Посмотреть сообщение
C++
1
2
3
4
nomeravtobysa = "73";
FIO = "Yakov4ykDima";
nomermarshryta = "198";
park = "da";
Цитата Сообщение от Revolver19931 Посмотреть сообщение
C++
1
2
3
4
nomeravtobysa = nomeravtobysa1;
FIO = FIO1;
nomermarshryta = nomermarshryta1;
park = park1;
чтобы скопировать в одну строку другую используй strcpy, предварительно выделив память.
Или рас уж тема в разделе С++ используй std::string
0
1 / 1 / 1
Регистрация: 24.09.2013
Сообщений: 140
08.11.2014, 21:31  [ТС] 9
Ребят, помогите! Мне нужно вывести автобусы которые находятся в парке через функцию void SrchnShow .

В ней я провожу сравнения :

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void SrchnShow()
{
 
 int result;
 char str1[]="da";
 result = strcmp( str1, park );
 if (result < 0)
 {
            cout<< "Avtobys # " <<nomeravtobysa<<" naxoditsa   v parke"<<endl;
            {
                if (result == 0) cout<< "Net avtobysov v parke!"<<endl;
                else cout<<"Error"<<endl;
            }
 }
}
однако у меня ничего не получается, мне ничего не выводит при вызове ф-и, что не так?
0
Эксперт PHP
4443 / 3619 / 1520
Регистрация: 24.04.2014
Сообщений: 10,665
08.11.2014, 21:48 10
Цитата Сообщение от Revolver19931 Посмотреть сообщение
что не так?
C++
1
2
3
4
5
6
7
8
9
if (result < 0)
{
    cout<< "Avtobys # " <<nomeravtobysa<<" naxoditsa * v parke"<<endl;
    {
        // result никогда не будет 0, т.к. сюда попадет только когда result < 0
        if (result == 0) cout<< "Net avtobysov v parke!"<<endl;
        else cout<<"Error"<<endl;
}
}
0
1 / 1 / 1
Регистрация: 24.09.2013
Сообщений: 140
08.11.2014, 22:46  [ТС] 11
Тогда нужно сделать так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
void SrchnShow()
 {
    int result;
    char str1[]="da";
    result = strcmp( str1, park );
        if(result == 0 )
            cout<<"error"<<endl; 
        
        if (result < 0)
            cout<< "Avtobys#   "<<nomeravtobysa<<"   V PARKE "<<endl;
         
}
Но выводит все ровно без сравнения переменной result , выводит все подряд...у меня больше идей нет

Добавлено через 47 минут
Помогите пожалуйста !
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.11.2014, 22:46

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Вывод массива выдает непонятные символы
Здраствуйте ,проблемы с выводом массива . До этого пользователь ввел в массив MASS числа. SUM-это...

Программа выдает разный результат при работе в обычном режиме и в режиме отладки
Здравствуйте. По заданию необходимо: записать одномерный символьный массив, таким образом, что в...

Почему при копировании из Matcad 15 в Word вместо русских букв получаются какие-то "каракули" - непонятные символы вместо букв
Я пользуюсь Matcad 15. Почему при копировании набранного текста из рабочей области Matcad 15 в...

При вычислении выдает непонятные значения
При вычислении выдает непонятные значения.


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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