Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - leosansan

#1111
Hasta ahora he creado el archivo original y de él he sacado en un araray las líneas sin "tr". pero antes de continuar admito sugerencias de lo hecho, ya que no estoy muy ducho en el tema de ficheros.
No he usado strstr porque, aunque me localiza los valores de "tr" no se me ocurre como usar esa información para eliminarla de la nueva línea.
Como ven, estoy abierto a sugerencias y consejos respecto al tema:

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NOM_ARCHIVO  "eliminar tr.txt"

int main()
{
    int i=0,j,k=0;
    int n_lineas =5;
    char linea[81],linea1[n_lineas][81];
    FILE* fichero;
    fichero = fopen(NOM_ARCHIVO, "wt");
    fputs("anita traba la ropa\n", fichero);
    fputs("tremor en roma\n", fichero);
    fputs("tres tristes triges\n", fichero);
    fputs("tragaban trigo\n", fichero);
    fputs("en un trigal", fichero);
    fclose(fichero);
    fichero = fopen(NOM_ARCHIVO, "rt");
    if (fichero == NULL){
        printf("No existe el fichero!\n");
        return 1;
    }
    while (! feof(fichero)) {
        fgets(linea, 81, fichero);
        puts(linea);
        for (j=0;linea[j]!='\0';j++) {
            if (linea[j]=='t' && linea[j+1]=='r'){
                j=j+1;continue;
            }
            else
            linea1[i][k]=linea[j];k++;
        }
        linea1[i][k]='\0';   /*<==aqui tengo duda de si es correcto*/
        printf ("%s", linea1[i]);i++;k=0;

    }
    fclose(fichero);

    return 0;
}

Saluditos!.
#1112
Cita de: rir3760 en  4 Diciembre 2012, 15:36 PM
@leosansan: el programa que publico es un ejemplo tomado del libro K&R2, por favor no hagas su tarea (esta en las reglas).
Sorry, pensé que al haber posteado código iba perdido oc confundido. Tampoco estoy seguro que mi código sea estrictamente aceptable, es sólo una opción.
Pero lo tendré en cuenta para otra ocasión.
Saluditos!.
#1113
Por favor, vuelve a postear tu código. Para ello usa  esta vez las etiquetas GeSHi y eliges C++. Te saldrán dos code y en medio pegas el código.
Al no haberlo hecho así aparentemente tienes errores, ya que no salen los
Código (cpp) [Seleccionar]
[i] cosa que sí tienes en el código que copio. Y eso que no aparece en el post directo es lo que te corrige _niu , pero que si lo tienes puestos.
Pero no funciona el código por algún por error al copiarlo desde un código sin etiquetas.
Por eso, vuelve a colgar el código pero entre las etiquetas code de GeSHi, insisto.
Por curiosidad te dejo lo que me sale a mí al copiar tu código -pero que está mal por lo de las etiquetas-:

Código (cpp) [Seleccionar]
#include <iostream>
#include <iomanip>
#include <conio.h>
using namespace std;
int main() {
   int i,STotLib,CantLibros[8],Min,Max;
   
// a) Inicializar Area
 
char  Area[8][20]={"Literatura","Matematica","Arte","Historia","Geografia","Computacion","Filosofia","Sistemas"};

   // b) Leer CantLibros
   
   cout<<"Ing. cantidad de libros solicitados:"<<endl;
   for(i=0;i<8;i=i+1)
    cin>>CantLibros[i];
   
// Aqui es la parte de, Ingresar i mostrar el area y la cantidad de libros
   cout<<"Ingrese indice : ";cin>>i;
   cout<<Area[i]<<" "<<CantLibros[i]<<endl;
   getch(); // pausa
   
// d) Calcular el total de libros
   
STotLib = 0;
   for(i=0;i<8;i=i+1)
        STotLib += CantLibros[i];
   // d) Mostrar Reporte
   cout<<setw(20)<<"Area"<<setw(20)<<"Cantidad Libros:"<<endl;
   cout<<"========================================= "<<endl;
   for(i=0;i<8;i=i+1)
    cout<<setw(20)<<Area[i]<<" "<<setw(10)<<CantLibros[i]<<endl;
   cout<<" Total de libros prestados: "<<STotLib<<endl;
   
// e) Calcular el minimo y los indices del minimo
   
  Min = CantLibros[0];
   for(i=1;i<8;i=i+1)
   {  if ( CantLibros[i] <Min )
      Min = CantLibros[i];
   }
   for(i=0;i<8;i=i+1)
   {   if ( CantLibros[i] == Min )
       {  cout<<i<<" "; }
   }
   cout<<endl<<"Minimo = "<<Min<<endl;
   
  // f) Encontrar el maximo y en que area se da
   
   Max = CantLibros[0];
   for(i=1;i<8;i=i+1)
   {   if ( CantLibros[i] > Max )
        Max = CantLibros[i];
   }
   for(i=0;i<8;i=i+1)
   {   if ( CantLibros[i] == Max )
       { cout<<Area[i]<<" "; }
   }
   cout<<endl<<"Maximo = "<<Max<<endl;
   getch();
return (0);
}

Saluditos!.
#1114
Cita de: cypascal en  4 Diciembre 2012, 22:01 PM
Hay que tener cuidado con el 2, que es primo
CitarY primo sale en el código posteado.
Saluditos!.
#1115
Cita de: jps96 en  4 Diciembre 2012, 16:16 PM
..........................
Pero el programa se cierra inesperadamente al escribir todos los números y no da tiempo a leer el resultado.
¿Dónde podría estar el error?
Es el compilador, supongo que usas Dev-C++. Para evitar el cierre inmediato de la ventana añade dos getchar al final, antes del return y añade al principio la libreria  #include <cstdio> .
Saluditos!.
P.D:Pásate al Code:::Blocks.
#1116
Cita de: jps96 en  4 Diciembre 2012, 13:25 PM
Pero una pregunta, ¿el ejercicio se podría hacer solamente con las librerías de #include <iostream>      
y #include <cmath>, sin necesidad de utilizar stdio.h ni climits?
Aunque ya Ferno te ha contestado a parte de la pregunta, podrías incluir la librería math y aprovechar que para que un número sea primo basta con que no sea divisible entre 2 y la raíz del número. Con todas las aportaciones te quedaría:
Código (cpp) [Seleccionar]

#include <iostream>
#include <cmath>

using namespace std;
main() {
   int j,num,k,suma=0,mayor= 0,menor= 1e12;
   int i,N,cont=0;
   cout <<"Indica  el total de numeros: ";
   cin >> N;
   for (i=0;i<N;i++){
   /*while (1){*/
       cout <<"Ingresa el numero "<<i+1<<": ";
       cin >>num;
       k=0;
       for (j=2; j<=sqrt(num); j++)
           if (num%j == 0)
               k++;
       if (k == 0 || num == 1){
           suma+=num;cont++;
           if (num>mayor) mayor=num;
           if (num<menor) menor=num;
           cout <<"El numero "<<num<<" esprimo"<<endl;
       }
       else cout <<"El numero "<<num<<" NO esprimo"<<endl;
       }
   cout <<"El numero total de primos es :"<<cont<<endl;
   if (cont>=1) cout <<"La media es "<< (float) suma/cont <<" , el mayor "<< mayor <<" y el menor "<< menor<<endl;
   else cout<<"No hay primos";
   return 0;
}

#1117
Código (cpp) [Seleccionar]
#include <stdio.h>
main()
{
    int i=0,n=0;
    char cadena [256];
    printf ("Escriba la frase: ");
    fgets (cadena,256,stdin);
    while (cadena[i++]!='\0'){
        if (cadena[i]==' ') n++;
    }
    printf ("\n%d",n);
    return 0;
}

Saluditos!.
#1118
Cita de: jps96 en  4 Diciembre 2012, 11:27 AM
Usuario durasno, me pasé toda una tarde a ver si podía resolverlo y nada.
CitarPero lo que no acabas de entender es que si te has pasado toda una tarde algo de código tendrás, aunque esté incompleto se pide que lo cuelgues.
Pero en fin, por esta vez "me lo creo" . A ver si te sirve esto:
Código (cpp) [Seleccionar]

#include <iostream>
#include <stdio.h>
#include <climits>
using namespace std;
main() {
    int j,num,k,suma=0,mayor= INT_MIN,menor= INT_MAX;
    int i,N,cont=0;
    cout <<"Indica  el total de numeros: ";
    cin >> N;
    for (i=0;i<N;i++){
        cout <<"Ingresa el numero "<<i+1<<": ";
        cin >>num;
        k=0;
        for (j=1; j<=num; j++)
            if (num%j == 0)
                k++;
        if (k == 2 || num == 1){
            suma+=num;cont++;
            if (num>mayor) mayor=num;
            if (num<menor) menor=num;
            cout <<"El numero "<<num<<" esprimo"<<endl;
        }
        else cout <<"El numero "<<num<<" NO esprimo"<<endl;
       }
    cout <<"El numero total de primos es :"<<cont<<endl;
    if (cont>=1) cout <<"La media es "<< (float) suma/cont <<" , el mayor "<< mayor <<" y el menor "<< menor<<endl;
    else puts ("No hay primos");
    return 0;
}

Saluditos!.
#1119
CitarTienes que aportar lo que llevas desarrollado de tu código, si no la respuesta es: no se hacen tareas.
Pero por si te has quedado en blanco, una pequeña ayuda es el ejercicio resuelto .... en C y sin explicaciones. La próxima si aportas algo será en C++:
Código (cpp) [Seleccionar]
#include <stdio.h>
#include <math.h>
#include <limits.h>
int main()
{
    long long int N,suma=0,mayor= LONG_LONG_MIN,menor= LONG_LONG_MAX;
    int cont=0;
    while(1){
        printf ("Introduzca un numero:");
        scanf ("%lld",&N);
        if (N==0) break;
        if (esPrimo(N)==0) printf ("%lld NO es primo \n",N);
        else {
            printf ("%lld es primo \n",N);
            suma+=N;cont++;
            if (N>mayor) mayor=N;
            if (N<menor) menor=N;
        }
    }
    if (cont>=1) printf("La media es %g , el mayor %lld y el menor %lld.\n",(float) suma/cont,mayor,menor);
    else puts ("No hay primos");
    return 0;
}
int esPrimo(long long int n)
{
int rq ,i;
rq = (int) sqrt(n);
for ( i = 2; i <= rq; i++)
{
if (n%i == 0)
return 0;
}
return n;
}

Saluditos!.
#1120
Programación C/C++ / Re: Comparar palabras en C
4 Diciembre 2012, 00:02 AM
CitarCreo que ahora te funcionará:
Código (cpp) [Seleccionar]


#include<stdio.h>
#include <string.h>
#define N 100
int main (void){
   int n,i,j,k,max,repe[n];
   printf("Dame el numero de palabras: ");
   scanf("%d",&n);
   for(i=0;i<n;i++)
       repe[i]=0;
   char p[n][N];
   printf("Da las palabras:\n");
   for(i=0;i<n;i++)
       scanf("%s",p[i]);
   for(k=0;k<n;k++)
       for(i=0;i<n;i++)
           if (strcmp(p[k], p[i])==0 &&k!=i)
               repe[k]++;
   k=0;
   max=0;
   for(i=0; i<n; i++){
       if(max<repe[i]){
           max=repe[i];
           k=i;
       }
   }
   printf("La  palabra que mas se repite es %s",p[k]);
   return 0;
}

Saluditos!.