Другие языки программирования и технологии
Программеры С++ сюда
Написал алгоритм подсчета различных букв в слове: #include "stdafx.h" #include <iostream> #include <cstring> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { char s[] = "abcdefgg"; int i, j, n, t; double r; r = 0.0; t = strlen(s); for(i = 0; i <= t; i++){ n = 0; for(j = 0; j <= t; j++) if(s == s[j]) n++; r += 1 / n; } cout << "r = " << r << '\n'; system("PAUSE"); return 0; } Программа выполняется без ошибок, но выводит не правильный результат(r = 0), составил блок схему, решил все на бумаге, и получилось r = 1, что в моем коде не так?
В общем идея правильная и код, если поправить, работает.
Ошибки в сравнении букв, границах для for и, что важно, в приведении типа для r
#include "stdafx.h"
#include <iostream>
#include <cstring>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char s [ ] = "gabcdefgggggggggg";
int i, j, n, t;
double r;
r = 0.0;
t = strlen(s);
for(i = 0; i < t; i ++){
n = 0;
for(j = 0; j < t; j++)
if(s [ i ] == s [ j ] ) n++;
r += 1.0 / n; //Точка обязательно!
}
cout << "r = " << r << '\n';
system("PAUSE");
return 0;
}
Ошибки в сравнении букв, границах для for и, что важно, в приведении типа для r
#include "stdafx.h"
#include <iostream>
#include <cstring>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char s [ ] = "gabcdefgggggggggg";
int i, j, n, t;
double r;
r = 0.0;
t = strlen(s);
for(i = 0; i < t; i ++){
n = 0;
for(j = 0; j < t; j++)
if(s [ i ] == s [ j ] ) n++;
r += 1.0 / n; //Точка обязательно!
}
cout << "r = " << r << '\n';
system("PAUSE");
return 0;
}
"потом цикл for без скобок" это не ошибка
и "деления на ноль" тут тоже не получится, потому что буква втретится в строке как минимум один раз
В данной задаче в циклах надо использовать знак строго меньше, а не "< ="
Я исправил ваш код, но в целом идея не совсем правильная, некоторые буквы то будут повторяться во внешнем цикле
(ниже это JAVA, но синтаксис такой же должен быть)
String s = "abcdefgg";
int i, j, n, t;
double r;
r = 0.0;
t = s.length();
for(i=0;i< t;i++){
n=0;
for(j=0;j< t; j++) if(s.charAt(i)==s.charAt(j)) n++;
r += 1 / n;
System.out.println(s.charAt(i)+" - "+n+" раз");
}
System.out.println("r = "+r);
и "деления на ноль" тут тоже не получится, потому что буква втретится в строке как минимум один раз
В данной задаче в циклах надо использовать знак строго меньше, а не "< ="
Я исправил ваш код, но в целом идея не совсем правильная, некоторые буквы то будут повторяться во внешнем цикле
(ниже это JAVA, но синтаксис такой же должен быть)
String s = "abcdefgg";
int i, j, n, t;
double r;
r = 0.0;
t = s.length();
for(i=0;i< t;i++){
n=0;
for(j=0;j< t; j++) if(s.charAt(i)==s.charAt(j)) n++;
r += 1 / n;
System.out.println(s.charAt(i)+" - "+n+" раз");
}
System.out.println("r = "+r);
n = 0
потом ты пытаешься делить на 0
r += 1 / n;
уже ошибка
потом цикл for без скобок
потом ты пытаешься делить на 0
r += 1 / n;
уже ошибка
потом цикл for без скобок
Похожие вопросы
- Уважаемые программеры! Вопрос адресую сюда, т.к. Вы, прежде всего - математики от природы...,см. ниже:
- А вот такая задачка для продвинутых программеров:
- уважаемые программеры! у меня вопрос по Dev C++! возможно он покажется глупым....
- Кому нужен высококлассный программер?
- Слышал такое мнение что C++Builder не круто а настоящие программеры пользуют visual c++, правда ли это ?
- Подскажите пожалуйста. Может есть действительно сильные программеры. Вобщем дан 2-мерный массив.
- Программеры! Просветите по Pascal! Есть пара вопросов.
- Народ порекомендуйте Linux,какой получше и популярнее, для программеров да вопщем?
- JS-программеры! подскажите пожалуйста код для перемещения объекта курсором мыши.
- почему программеры странные люди?