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

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

Восстановить пароль Регистрация
 
verena-12358
1 / 1 / 0
Регистрация: 12.10.2011
Сообщений: 165
10.04.2012, 11:38     Есть ли ошибка в коде. Не могу найти. #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
#include<stdio.h>
#include<string.h>
#include<conio.h>
int summa(char *st)
{
    int i;
    i=0;
    while ( st[i] ) 
{ 
if ((st[i] >= 'a' && st[i] <= 'z' )) 
st[i] -= 32; 
else 
i++; 
} 
printf("\n%s\n", st);
return 0;
}
int main()
{
char *st[80]; 
printf("\nEnter the string\n"); 
scanf("%s",&st);
summa(*st);
return 0;}
Где здесь ошибка?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Catstail
Модератор
 Аватар для Catstail
21500 / 10253 / 1669
Регистрация: 12.02.2012
Сообщений: 17,139
10.04.2012, 11:48     Есть ли ошибка в коде. Не могу найти. #2
1) Этот оператор if ((st[i] >= 'a' && st[i] <= 'z' )) лучше бы записать так:
if ((st[i] >= 'a') && (st[i] <= 'z' )) Но это не ошибка...
2) на мой взгляд неверно реализован ввод строки scanf("%s",&st);
Амперсанд перед st - лишний, т.к. st - это уже АДРЕС
verena-12358
1 / 1 / 0
Регистрация: 12.10.2011
Сообщений: 165
10.04.2012, 11:57  [ТС]     Есть ли ошибка в коде. Не могу найти. #3
как тогда исправить реализацию scanf
Catstail
Модератор
 Аватар для Catstail
21500 / 10253 / 1669
Регистрация: 12.02.2012
Сообщений: 17,139
10.04.2012, 12:19     Есть ли ошибка в коде. Не могу найти. #4
scanf("%s",st);

Добавлено через 18 минут
Нет! Я был не прав!!! Главная ошибка - в описании строки - char *st[80];
Надо char st[80]. Ты ведь описываешь не массив указателей на строку, а просто строку из 80 символов.
Ну, и обращаться к ф-ции summ надо так: summ(st) (без звезды). Все заработает.
verena-12358
1 / 1 / 0
Регистрация: 12.10.2011
Сообщений: 165
10.04.2012, 13:43  [ТС]     Есть ли ошибка в коде. Не могу найти. #5
а если мне задачу решить надо через указатели?
Catstail
Модератор
 Аватар для Catstail
21500 / 10253 / 1669
Регистрация: 12.02.2012
Сообщений: 17,139
10.04.2012, 16:46     Есть ли ошибка в коде. Не могу найти. #6
А Бога ради! Просто звезда там НЕ НУЖНА. И в функции summa указатель используется...
Yandex
Объявления
10.04.2012, 16:46     Есть ли ошибка в коде. Не могу найти.
Ответ Создать тему
Опции темы

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