How can i Fix this code im having problem with the fopen freopen on C++ Visual S
ID: 3874712 • Letter: H
Question
How can i Fix this code im having problem with the fopen freopen on C++ Visual Studio theres an error that i need to use fopen_s
#include
#include
#include
using namespace std;
int ConteoNumbYLetras(char* str, int& palabras, int& letras)// la function del pointer que returna el numbero de palabras y letras//
{
palabras = 0;
unsigned int i = 0;
letras = 0;
while (str[i] == ' ')
i++;
for (; str[i]; i++)
{
if (((str[i] >= 'a') && (str[i] <= 'z')) || ((str[i] >= 'A') && (str[i] <= 'Z')))
palabras++;
if (str[i] == ' ')
{
letras++;
while (1)
if (str[i] == ' ')
i++;
else
{
i--;
break;
}
}
}
palabras = palabras + 1;
return (palabras);
}
float promedio(float palabras, float letras) // la funcion que da el promedio//
{
float a = (double)(letras / palabras);
return a;
}
void ConteoVocalYConson(char* linea, int &vocales, int &consonantes) // la funcion conteo de vocales y consonantes //
{
for (int i = 0; linea[i] != ''; ++i)
{
if (linea[i] == 'a' || linea[i] == 'e' || linea[i] == 'i' ||
linea[i] == 'o' || linea[i] == 'u' || linea[i] == 'A' ||
linea[i] == 'E' || linea[i] == 'I' || linea[i] == 'O' ||
linea[i] == 'U')
{
++vocales;
}
else if ((linea[i] >= 'a'&& linea[i] <= 'z') || (linea[i] >= 'A'&& linea[i] <= 'Z'))
{
++consonantes;
}
}
}
int main()
{
// comienza a leer el example.txt file //
FILE *f = fopen("C:\Users\adel134\ejemplo.txt", "rb");
fseek(f, 0, SEEK_END);
long fsize = ftell(f);
fseek(f, 0, SEEK_SET);
char *string = (char *)malloc(fsize + 1);
fread(string, fsize, 1, f);
fclose(f);
string[fsize] = 0;
//termina de leer el example.txt file/
// las variables para las vocales y consonantes y el promedio de palabras y letras //
int palabras = 0;
int letras = 0;
int vocales = 0;
int consonantes = 0;
cout << "Se pudo Leer el file de ejemplo.txt...." << endl;
ConteoNumbYLetras(string, palabras, letras); // la funcion que returna las letras y palabras//
ConteoVocalYConson(string, vocales, consonantes); // La funcion que returna las consonantes y vocales//
cout << "Por Favor abra el file output.txt para que vea los resultados.... " << endl;
// redirege el output para el file output.txt //
freopen("output.txt", "w", stdout);
cout << "Original String-> " << string << endl;
cout << " conteo de palabras= " << palabras;
cout << " conteo de letras=" << letras;
cout << " numbero promedio de letras por palabras=" << promedio(palabras, letras) << endl;
cout << " Numbero de vocales: " << vocales << endl;
cout << " Numbero de consonantes: " << consonantes << endl;
return 0;
}
Explanation / Answer
Given below is the fixed program according to your requirements. It wil prompt for filepath of input file containing some text. Then it will generate the results in an output file. Hope it helps. At the end I have shown a sample input file named example.txt and the output file output.txt.
If you are giving a file path in windows, use double slash , for example. C:\temp\example.txt
#include <iostream>
#include <fstream>
using namespace std;
int ConteoNumbYLetras(char* str, int& palabras, int& letras)// la function del pointer que returna el numbero de palabras y letras//
{
unsigned int i = 0;
bool word = false;
letras = 0;
palabras = 0;
for (i = 0; str[i]; i++)
{
if (((str[i] >= 'a') && (str[i] <= 'z')) || ((str[i] >= 'A') && (str[i] <= 'Z')))
letras++;
if (str[i] == ' ' || str[i] == ' ' || str[i] == ' ')
{
if(word)
{
palabras++;
word = false;
}
}
else
{
word = true;
}
}
if(word)
palabras = palabras + 1;
return (palabras);
}
float promedio(float palabras, float letras) // la funcion que da el promedio//
{
float a = ((double)letras / palabras);
return a;
}
void ConteoVocalYConson(char* linea, int &vocales, int &consonantes) // la funcion conteo de vocales y consonantes //
{
vocales = 0;
consonantes = 0;
for (int i = 0; linea[i] != ''; ++i)
{
if (linea[i] == 'a' || linea[i] == 'e' || linea[i] == 'i' ||
linea[i] == 'o' || linea[i] == 'u' || linea[i] == 'A' ||
linea[i] == 'E' || linea[i] == 'I' || linea[i] == 'O' ||
linea[i] == 'U')
{
++vocales;
}
else if ((linea[i] >= 'a'&& linea[i] <= 'z') || (linea[i] >= 'A'&& linea[i] <= 'Z'))
{
++consonantes;
}
}
}
int main()
{
// comienza a leer el example.txt file //
char filepath[100];
char str[500];
cout << "Enter filepath containing a string: ";
cin.getline(filepath, 100);
ifstream inFile(filepath); //open file
inFile.getline(str, 100);
//termina de leer el example.txt file/
inFile.close();
// las variables para las vocales y consonantes y el promedio de palabras y letras //
int palabras = 0;
int letras = 0;
int vocales = 0;
int consonantes = 0;
cout << "Se pudo Leer el file de " << filepath << endl;
ConteoNumbYLetras(str, palabras, letras); // la funcion que returna las letras y palabras//
ConteoVocalYConson(str, vocales, consonantes); // La funcion que returna las consonantes y vocales//
cout << "Por Favor abra el file output.txt para que vea los resultados.... " << endl;
// redirege el output para el file output.txt //
ofstream outFile("output.txt");
outFile << "Original String-> " << str << endl;
outFile << "conteo de palabras= " << palabras << endl;
outFile << "conteo de letras=" << letras << endl;
outFile << "numbero promedio de letras por palabras=" << promedio(palabras, letras) << endl;
outFile << "Numbero de vocales: " << vocales << endl;
outFile << "Numbero de consonantes: " << consonantes << endl;
outFile.close();
return 0;
}
input file: example.txt
Good morning
ouput file: output.txt
Original String-> Good morning
conteo de palabras= 2
conteo de letras=11
numbero promedio de letras por palabras=5.5
Numbero de vocales: 4
Numbero de consonantes: 7
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.