Estoy en mi primer curso de introducción a Comp Sci. La tarea que tengo es ingresar un archivo .txt y luego generar un archivo .txt revisado. Los primeros problemas que tuve fueron solo con arreglar los directorios. Lo hice y todo salió bien con los archivos .txt , excepto que el profesor dice que tengo un error en la declaración de switch .
#include <fstream> #include <iostream> using namespace std; int main() { int s = -2, a = 0, b = 0, NumIn; ifstream inFile("NumbersIn.txt"); if (inFile.fail()) { cout << "Unable to open file" << endl; return -1; } ofstream outFile("RevisedNumbers.txt"); while (!inFile.eof()) { inFile >> NumIn; cout << NumIn << endl; if (NumIn < 0) NumIn = -1; else if (NumIn > 0) NumIn = 1; outFile << NumIn << endl; switch (NumIn) { case -1: a += s; break; case 0: s += 1; case 1: b += s; } } outFile.close(); inFile.close(); cout << "A = " << a << endl; cout << "B = " << b << endl; cout << "S = " << s << endl; return 0; }Producción:
0 -2 9 14 -22 12 6 -9 12 13 -33 21 9 0 1 2 3 4 1 A = -4 B = -9 S = 0 Program ended with exit code: 0 Estoy incluyendo la pregunta de asignación aquí, así que la razón por la que usé s , a y b como números enteros:
Su programa requerirá los siguientes archivos
Archivo de entrada: NumbersIn.txt (adjunto a esta tarea)
Archivo de salida: NúmerosRevisados.txt
Su programa utilizará las siguientes variables:
int s=-2, a = 0, b = 0. NumIn;
Siempre que haya datos en el archivo de entrada, su programa leerá un número en la variable NumIn, lo imprimirá en la pantalla y luego determinará lo siguiente:
Si NumIn es negativo cámbielo a -1
Si NumIn es positivo cámbielo a +1
Si NumIn es cero, no haga nada
Escriba el nuevo valor de NumIn en el archivo de salida RevisedNumbers
Después de actualizar NumIN, use una declaración de cambio para basarse en el valor actual de NumIn
Cuando NumIn es -1, aumente el valor de A en S
Cuando NumIn es 0, incremente S en 1
Cuando NumIn es 1, aumente el valor de B en S
Cuando ya no tenga datos para leer, imprima el valor actual de A, B y S.Envíe una copia de su programa.
La salida de pantalla
El archivo de entrada.
El archivo de salida.
Tu versión:
switch (NumIn) { case -1: a += s; break; case 0: s += 1; case 1: b += s; }Para solucionarlo, agregue dos declaraciones de interrupción:
switch (NumIn) { case -1: a += s; break; case 0: s += 1; break; case 1: b += s; break; }Sin ellos, el caso 0 pasa al caso 1. En realidad, es legal hacerlo, pero se considera un error común, por lo que SIEMPRE debe hacer un comentario si su falla es intencional. Supongo que esta vez no lo es.