Dev - C++ - Ayuda con este programa

 
Vista:
sin imagen de perfil

Ayuda con este programa

Publicado por Alejandro (1 intervención) el 24/11/2016 20:29:51
Necesito completar este trabajo para mañana, y no se como hacerlo.

d50e60a8e95140adea8e4d23f26b7366

Hasta ahora esto es lo que he hecho:


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
#pragma hdrstop
#pragma argsused
#ifdef _WIN32
#include <tchar.h>
#else
  typedef char _TCHAR;
  #define _tmain main
#endif
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
 
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char** argv) {
	int i, int V[i];
	char masusada, primera[1], ultima[a], archivo, palabras[256];
	archivo.open("C:\palabras.in",ios::in)
	{
	for (i = 0; i <= 256; i++)
		{
 			archivo>>texto;
 			V[i]= atoi(texto);
		}
	}
 
	archivo.close("C:\palabras.out",ios::out)
	{
	cout<<masusada<<endl;
	cout<<palabras[256]<<endl;
	}
	system("pause");
	return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con este programa

Publicado por agustin (522 intervenciones) el 25/11/2016 02:46:15
En tu código hay muchas cosas que están mal pero ahora mismo no tengo pc a mano.
Por otro lado te digo como yo lo plantearía.
1-Como se que el alfabeto válido es solo alfabético y minúsculas y sin acentos, si cuento con la ñ tengo 32 posibles primeros y 32 posibles últimos. Pero no nos pide que tengan que cumplirse ambas, o sea que solo necesitamos saber cual se usa más sumando ambas con lo que podemos usar un simple array de enteros para contar las veces que se repiten.
1
int contadorLetras[32];
Lo inicio todo a 0:
1
for (int index = 0; index <= 32;contadorLetras[index]=0, index++);
Ahora solo necesitas leer cada palabra y imagina que para ello usas un string:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if(palabra[0] >= 'a' && palabra[0] <= 'z' && palabra[palabra.Length() -1] >='a' && palabra[palabra.Length() -1] <='z'){
    contadorLetras[palabra[0] - 'a']++;
    contadorLetras[palabra[palabra.Length() - 1] - 'a']++;
}else if (palabra[0] == 'ñ' && palabra[palabra.Length() -1] >='a' && palabra[palabra.Length() -1] <='z'){
    contadorLetras[31]++;
    contadorLetras[palabra[palabra.Length() - 1] - 'a']++;
}else if (palabra[0] >= 'a' && palabra[0] <= 'z' && palabra[palabra.Length() -1] =='ñ'){
    contadorLetras[palabra[0] - 'a']++;
    contadorLetras[31]++;
}else if (palabra[0] == 'ñ' && palabra[palabra.Length() -1] == 'ñ'){
    contadorLetras[31] += 2;
}else {
    cout << "El archivo tiene un formato incorrecto." << endl;
    ...
    ...
}
Con esto conseguimos contabilizar el número de veces que aparece cada letra primera y final. Algo importante, la ñ no va en el orden que nosotros conocemos en nuestro alfabeto con lo que los primeros 31 contadores son los de las letras del abecedario sin contar con la ñ y el 32 que es el último será el contador de las ñ.
Luego usas un for para buscar el valor mayor del array y una vez lo tienes, usas otro for para mostrar todas las palabras del archivo que contengan esa letra al inicio o al final ¿por qué usar un for? Porque puede haber más de una letra que tenga el mismo número de ocurrencias con lo que al usar un bucle for para buscar todas las letras cuyo contador sea igual a mayor solucionamos esa parte.
Con eso ya tienes con que empezar.
PD: si puedes usar funciones la parte de los condicionales se acortaria considerablemente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar