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

Почему неправильно выводится массив? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сортировка по элементу структуры http://www.cyberforum.ru/cpp-beginners/thread308247.html
требуется выполнить сортировку готовой структуры по элементу, в данном случае - по дате. Код: #include <iostream> #include <fstream> #include <stdlib.h> using namespace std; char familia,imya,otchectvo,pol,adress,s,tmp,*poz,dt,mt,gt; int d,m,g,tm,okstr = 0,strnum = 0; struct anc {
C++ Найти наименьший элемент каждой четной строки матрицы. Найти наименьший элемент каждой четной строки матрицы. Помогите пожалуйста! не знаю как решить http://www.cyberforum.ru/cpp-beginners/thread308198.html
строки C++
Здраствуйте, помоги пожалуйста. можете подписать к строчкам, что они обозначают. а то надо лабу сдать... Мне бы узнать те строки, где подписано ">>>". #include<iostream.h> >>> #include<conio.h> >>>> #include<stdio.h> >>> #include<stdlib.h> >>> #include <math.h>
Ссылка на файл C++
Приветствую всех. У меня небольшой вопрос... Есть код: g_hInputFile = CreateFile( (LPCWSTR)"C://a.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY,
C++ выводит на экран номера месяца http://www.cyberforum.ru/cpp-beginners/thread308194.html
Составить программу, которая в зависимости от порядкового номера месяца (1, 2 ..... 12) выводит на экран его название (январь, февраль, ... декабрь)
C++ Определить, верно ли Определить, верно ли, что при делении неотрицательного целого числа a на положительное число b получается остаток, равная одному из двух заданных чисел с или d. подробнее

Показать сообщение отдельно
NinoZombie
0 / 0 / 0
Регистрация: 29.04.2011
Сообщений: 8

Почему неправильно выводится массив? - C++

30.05.2011, 15:17. Просмотров 1169. Ответов 11
Метки (Все метки)

Не пойму... массив arr выводится неправильно, если его выводить в main.Получается что-то типа "-858993460" .В cifr он выводится нормально
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
/*Задан текст, состоящий из слов, записанных через запятые, и заканчивающийся точкой. 
Длина текста не больше 200 символов, могут быть использованы любые символы. 
Словом считать последовательность символов, не содержащую пробел. 
Выдать слова текста и их длины. Сформировать новую строку из слов, 
состоящих только из латинских букв, и длиной не более 7 символов. 
При этом все строчные буквы заменить на заглавные буквы. 
Найти массив сумм цифр цифровых слов.*/
 
int str_sl(char [200],char*,char*,char*[20]);
int is_latin(char* [20],int);
int cifr(char* [20],int);
char rezl[200];
 
void main()
{
    char x[200],*mslov[20];
    int i,n,cnt,arr[20],f;
    cout<<"Input string"<<endl;
    cin>>x;
    n=str_sl(x,",",".",mslov);
    for (i=0;i<n;i++)
    {
        cout<<"Word number "<<i+1<<" "<<mslov[i]<<" length  "<<strlen(mslov[i])<<endl;
    };
    cout<<endl;
    f=is_latin(mslov,n);
    if (f>0)
        cout<<"New string is "<<rezl<<"."<<endl<<endl;
    else 
        cout<<"We have no english words, who length < or = 7 in string"<<endl<<endl;
    cnt=cifr(mslov,n);
    if (cnt>0)
    {cout<<"Massive of digit's summ:"<<endl;
    for (i=0;i<cnt;i++)
        cout<<arr[i]<<endl;}
    else 
    cout<<"We have no only-digit words in string"<<endl;
    
    
}
 
//----------------------------------------------------
int str_sl(char x[200],char* rsl,char* kstr,char* mslov[20])
{int n=0;
char *adrz;
do {
adrz=strstr(x,rsl);
if (adrz==NULL)
adrz=strstr(x,kstr);
mslov[n]=new char[adrz-x];
strncpy(mslov[n],x,adrz-x);
mslov[n][adrz-x]='\0';
strcpy(x,adrz+1);
n++;
} while(strcmp(x,"")!=0);
return n;
}
 
//---------------------------------------------------------
int is_latin(char* mslov[20],int n)
{
char buk[27]="abcdefghijklmnopqrstuvwxyz";
int i=0,f=0;
for(i=0;i<n;i++) 
{
    if(strspn(mslov[i],buk)==strlen(mslov[i]) && strlen(mslov[i])<=7)       
    {strcat(rezl,strupr(mslov[i]));
    strcat(rezl," ");
    f=f+1;}
}
return f;
}
//---------------------------------------------------
int cifr(char* mslov[20],int n)
{
char cif[11]="0123456789";
int i,s,sum=0,cnt=0,arr[20];
for(i=0;i<n;i++) 
{
    if(strspn(mslov[i],cif)==strlen(mslov[i]))      
    {
        s=atoi(mslov[i]);
        while (s!=0) {sum=sum+s%10; s=s/10;}
        arr[cnt]=sum;
        cnt=cnt+1;
        sum=0;
    }
}
return cnt;
}
Добавлено через 1 час 35 минут
Может нужно чтобы функция cifr возвращала массив, а не счетчик?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru