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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Welemir
3 / 3 / 0
Регистрация: 26.09.2009
Сообщений: 104
#1

Трабла с функцией ( - C++

27.09.2009, 13:48. Просмотров 1195. Ответов 12
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
 
int main() {  }
 
char m(char s) {
 
char mass[500];
 
for (int i =0; i < strlen(s); i++) {
 
   printf("%d",mass[i);
 
}
 
}
Компиль выдаёт invalid conversion from `char' to `const char*' .Что делать то...Тип сравнение недоупстимо?...Как Тогда быть ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2009, 13:48     Трабла с функцией (
Посмотрите здесь:

C++ трабла с MessageBox
Опять трабла с ответом C++
C++ трабла кодом(Функция)
C++ трабла с выводом строки
C++ задача с функцией
Трабла с прогой C++
C++ Помогите с функцией
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rififi
2335 / 1050 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
27.09.2009, 13:56     Трабла с функцией ( #2
Welemir
судя по написанному, имеются либо громадные провалы в памяти, либо проблнма с пониманием самых основ.
лучше расскажи, че ты задумал сделать в этой функции?
TanT
эволюционирую потихоньку
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
27.09.2009, 13:57     Трабла с функцией ( #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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
 
char m(char *s);
int main() 
{ 
  char *str="1234567";
  m(str);
  system("PAUSE");
  return 0; 
}
 
// выводит неопределённые значения массива mass в количестве strlen(s)
char m(char *s) {
  
  char mass[500]; // выводить хочешь не заполненый массив
  
  for (int i =0; i < (int)strlen(s); i++) 
  {   
    printf("%d",mass[i]); // тут была ошибка, нехватало ]
  }
  return '?'; // что-то должен вернуть 
}
Welemir
3 / 3 / 0
Регистрация: 26.09.2009
Сообщений: 104
27.09.2009, 14:07  [ТС]     Трабла с функцией ( #4
Хотел написать функцию,в которую можно передавать символы и выводить их... Без main() никак не обойтись чтоли?)
TanT
эволюционирую потихоньку
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
27.09.2009, 14:14     Трабла с функцией ( #5
если хочешь посмотреть как работать будет, то без main никак. откуда вызывать свою функцию-то будешь?
странный функционал
передавать символы и выводить их
M128K145
Эксперт C++
8280 / 3499 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
27.09.2009, 14:21     Трабла с функцией ( #6
Цитата Сообщение от Welemir Посмотреть сообщение
Без main() никак не обойтись чтоли?)
main - ни много, ни мало, а точка входа в твою программу. Проще говоря - нет main - нет начала программы
Welemir
3 / 3 / 0
Регистрация: 26.09.2009
Сообщений: 104
27.09.2009, 14:53  [ТС]     Трабла с функцией ( #7
Вот другая функция.Не работает и усё(:

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
#include <iostream>
#include <conio.h>
#include <string.h>
 
 
int main() {
    
 int p = 0; // счётчик пробелов
 int t = 0; // счётчик табуляций
 int n = 0; // сч1тчий новых строк
 int d = 0;
 
  d = getchar();
  
  while( d != EOF) {
         
         if ( d == '\n') {
              
              n++;
              
              }
              
              if ( d == '\t') {
                   
                   t++;
                   
                   }
                   
                   if ( d == ' ') {
                        
                        p++;
                        
                        }
                        
                        
                        printf("%d\n",t);
                        system("PAUSE");
                        exit(1);
                        
                        }
                        
                        
                        }
ЗЫ: На РНР-то работает...Пока что программа должна считать символы табуляций).
kravam
быдлокодер
1695 / 874 / 44
Регистрация: 04.06.2008
Сообщений: 5,338
27.09.2009, 14:56     Трабла с функцией ( #8
Цитата Сообщение от Welemir Посмотреть сообщение
Хотел написать функцию,в которую можно передавать символы и выводить их...
Тода так

C++
1
2
3
4
5
6
7
8
#include <stdio.h>
 
int main() {  }
 
//Вот в эту функцию ты передал символ и она его вывела.
char m(char s) {
 printf("%c", s);
}
easybudda
Эксперт С++
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
27.09.2009, 15:12     Трабла с функцией ( #9
Цитата Сообщение от Welemir Посмотреть сообщение
Вот другая функция.
Вот так как-то:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
int main(void)
{
    int p,t,n,d;
    p = t = n = 0;
    
    while ( (d = getchar()) != EOF ){
        if ( d == ' ' )
            p++;
        if ( d == '\t' )
            t++;
        if ( d == '\n' )
            n++;
    }
    printf("p = %d\tt = %d\tn = %d\n", p, t, n);
    
    return 0;
}
В никсовой консоли, чтобы EOF выдало, надо Ctrl+D нажать (конец файла), в досовской - не помню. Ctrl+Z вроде...
kravam
быдлокодер
1695 / 874 / 44
Регистрация: 04.06.2008
Сообщений: 5,338
27.09.2009, 15:13     Трабла с функцией ( #10
Welemir, непонятно мне ничего...
По твоей неработающей функции. Значит, первое.
Если ты хочешь, чтобы у тебя всё-таки был цикл, то сделай так, чтобы можно было возвращаться к проверке условия
( d != EOF)

Пока же дела обстоят так: программа заходит в тело цикла, доходит до функции exit(1); которая выполняется БЕЗУСЛОВНО.
Программа прекращает свою работу.
Если хочешь использовать эту функцию, то как-нибудь по другому. Либо помести её в
другое место (вынеси за тело цикла), либо сделай, чтобы она вызывалась ПО НЕКОТОРОМУ
УСЛОВИЮ

(Я беру на себя смелость домысливать за неимением информации).
TanT
эволюционирую потихоньку
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
27.09.2009, 15:14     Трабла с функцией ( #11
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
#include <iostream>
#include <conio.h>
#include <string.h>
 
#define  ESC    27
#define  ENTER  13
 
int main() {  
  int p = 0; // Г±Г·ВёГІГ·ГЁГЄ ïðîáåëîâ
  int t = 0; // Г±Г·ВёГІГ·ГЁГЄ ГІГ*áóëÿöèé
  int n = 0; // Г±Г·ВёГІГ·ГЁГ© Г*îâûõ ñòðîê
  char d;  
 
  
  do 
  {
    d = getch();  
    if ( d == ENTER) {      
      n++;     
    }
    
    if ( d == '\t') {      
      t++;      
    }
    
    if ( d == ' ') {      
      p++;  }  
   // printf("%c\n",d);
    }  while( d != ESC);   
    
    printf("press space:%i\ntabulation:%i\nenter:%i\n",p, t, n);
    system("PAUSE");
    return 0;    
 }
Welemir
3 / 3 / 0
Регистрация: 26.09.2009
Сообщений: 104
27.09.2009, 16:20  [ТС]     Трабла с функцией ( #12
Всё,терь я понял вас.Пасип большое.*Ушёл проверять примеры*

ЗЫ: последний пример чет не хочет работать.

Добавлено через 15 минут
Всё,терь я понял вас.Пасип большое.*Ушёл проверять примеры*

ЗЫ: последний пример чет не хочет работать.
ЗЫ2: Насчёт условий - разве EOF(End of File) не является концом файла? У меня получается проверка одного символа,а не строки...

Не фтыкаю я ни хрена...мошь с консоли как-нибудь получить данные ? Типа как в рнр массив рекьюст...Тут я вообще не догоняю ни черта.Потом можно по массиву было б прогнать.

ЗЫ3: Тупо поставил break; после printf().В итоге проверяет только один символ).

Добавлено через 9 минут
Теперь,кажется,догнал,в чём дело.Я поставил break и он вышел после проверки всех условий цикла и цикл НЕ повторился.Я так понял,тут нужно какое-то условие,например,если счетчики дополнились до 100 или 1000,то выйти из цикла.Или for() поставить...

Добавлено через 13 минут
Ура,получилось! Вот программа,которая считает 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
#include <iostream>
#include <conio.h>
#include <string.h>
 
 
int main() {
    
 int p = 0; // Г±Г·ВёГІГ·ГЁГЄ ïðîáåëîâ
 int t = 0; // Г±Г·ВёГІГ·ГЁГЄ ГІГ*áóëÿöèé
 int n = 0; // Г±Г·ВёГІГ·ГЁГЄ Г*îâûõ ñòðîê
 int d = 0;
 
 d = getchar();
 
  while(d != EOF) {
         
         if ( d == '\n') {
              
              n++;
              
              }
              
              if ( d == '\t') {
                   
                   t++;
                   
                   }
                   
                   if ( d == ' ') {
                        
                        p++;
                        
                        }
                        
                        printf("Tabulations:%d\nProbels:%d\nStrings:%d\n",t,p,n);
                        
                        if (n == 100) {  break; }
                        d = getchar();
 
                        }
                        
                        }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.09.2009, 05:36     Трабла с функцией (
Еще ссылки по теме:

Как быть и что делать? Трабла с шаблонами C++
C++ Ошибка с функцией
C++ Трабла с конструктором
C++ Трабла с шаблонным классом "Геометрия"
C++ Читаем из файла, трабла (ifstream, getline)

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

Или воспользуйтесь поиском по форуму:
accept
4817 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
28.09.2009, 05:36     Трабла с функцией ( #13
Цитата Сообщение от Welemir
Компиль выдаёт invalid conversion from `char' to `const char*'
C
1
strlen(s)
C
1
char m(char s) {
s - символ, а strlen ожидает указатель на неменяемый символ
Yandex
Объявления
28.09.2009, 05:36     Трабла с функцией (
Ответ Создать тему
Опции темы

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