Foro Oficial De C++

hola soy nuevo y me gustaria aprender c++
tengo un libro pero no lo entiendo bien
podeis ayudarme
porfavor poned links de pdf

¿Ya has programado antes?

C++ es un lenguaje de nivel medio (es decir, complicado como para no tener fundamentos de programacion)

El principal link para aprender C++ es http://www.cplusplus.com/doc/tutorial/

Pero ahi no explican todo, solo generalidades (es mas bien como para alguien que ya tiene fuertes conceptos de programacion y computacion)

El resto, es decir, lo que no entiendas, te tocó preguntarle a Google
 
Ayuda para comparar una cadena con el nombre de una variable int

Buenas, mi problema es el siguiente:

Estoy tratando de comparar una cadena (t_borrar) la cual representa el nombre de una tarea que debe borrarse dentro de una partición fija, y quiero que en el momento de que se capture la cadena, la tarea elegida para borrar (t1, t2, t3, t4, t5) sea borrada.

Pero no me ha salido:

esto es lo que tengo de momento:

Código:
Código:
#include <iostream>
#include <stdio.h>

using namespace std;

int main(){
    
        int opcion;
        void partFija();
        void partDinamica();
            
        //MENU DE BIENVENIDA  
        printf("\t\t BIENVENIDO: ");    
        printf("OPCIONES \n\n"); 
        printf("\t 1.    PARTICION FIJA  \n");
        printf("\t 2.    PARTICION DINAMICA  \n");
        printf("\t 3.    SALIDA   \n\n");
        printf("digite una de las opciones: ");
        scanf( "%i", &opcion);
        
        switch (opcion){
            
            case 1:
                printf("PARTICION FIJA \n\n");
                printf("NO HAY RELOCALIZACION \n\n");
                partFija();
                
                break;
            
            case 2:
                printf("PARTICION DINAMICA \n\n");
                partDinamica();
            
                break;
                
            case 3:
                break;
        }
        
        getchar();  
        return EXIT_SUCCESS; 
}

void partFija(){
 
         int t[5];
         int p[5]={20,15,20,10,30};
         printf("HOLA!!\n\n");
         
         //IMAGEN DE PARTICIONES
         printf("\n\n");
         printf("PARTICION FIJA\n");
         printf("-------------------   0\n");
         printf("|        SO       | \n");
         printf("-------------------   30\n");
         for(int i=0; i<5; i++){
            printf("|        p%i       | \n", i+1);
            printf("-------------------   %i\n", p[i]);
         }

         
          //INGRESO DE TAREAS
         printf("5 TAREAS MAXIMO \n\n");
         for(int i=0; i<5; i++){
            printf("TAREA %i:  ", i+1); scanf( "%i", &t[i]);
         }
         
         
         //INGRESO DE TAREAS EN PARTICIONES
         printf("\n\n");
         printf("PARTICION FIJA\n");
         printf("-------------------   0\n");
         printf("|        SO       | \n");
         printf("-------------------   30\n");
         for(int i=0; i<5; i++){   
            if(t[i]==0){
                printf("|        p%i       | \n", i+1);
                printf("|   ***********   | \n");
                printf("|     LIBRE: %i    | \n", p[i]);
                printf("-------------------   %i\n", p[i]);
            }
            else{    
                printf("|        p%i       | \n", i+1);
                printf("|   ***********   | \n");
                printf("|     Frag: %i    | \n", p[i]-t[i]);
                printf("-------------------   %i\n", p[i]);
            }
         }
        
         
         do{
                


********************************************PROBLEMA!!!!**************

                printf("\n\nQUE TAREA DESEA ELIMINAR??  ");
                char t_borrar[2]; scanf( "%s", t_borrar);
                printf("-------------------   0\n");
                printf("|        SO       | \n");
                printf("-------------------   30\n");
                
                for(int i=0; i<5; i++){
                    
                        if(t[i]==atoi(t_borrar)){
                            t[i]=0;
                        }
    
                        //IMAGEN DE PARTICIONES FIJAS CON TAREA RETIRADA 
                        if(t[i]==0){
                            printf("|        p%i       | \n", i+1);
                            printf("|   ***********   | \n");
                            printf("|     LIBRE: %i    | \n", p[i]);
                            printf("-------------------   %i\n", p[i]);
                        }
                        else{    
                            printf("|        p%i       | \n", i+1);
                            printf("|   ***********   | \n");
                            printf("|     Frag: %i    | \n", p[i]-t[i]);
                            printf("-------------------   %i\n", p[i]);
                        }
                    
                 }
                
*****************************HASTA AQUI COMO LE HAGO???*******************



                 //El programa pregunta si quiere continuar
                 char opc;
                 fflush(stdin);
                 printf("\n\n\nDESEA RETIRAR OTRA TAREA?? (S/N) "); 
                 scanf("%c", &opc);
                 if(opc=='n' or opc=='N')
                    break;
                 printf("\n\n");
                 
         }while(true);
         getchar();
                
         
             
}

void partDinamica(){
    
         printf("HOLA!! particion dinamica\n\n");
         
         
         getchar();    

}

gracias por cualquier ayuda, realmente necesito cualquier ayuda posible, ya me queme las pestañas, pero con el atoi se borran todas las tareas!!!!

Pero como le hago para la comparación??

Un ejemplo, necesito borrar (igualar a cero) una tarea, puede ser t2. y quiero que pregunte,

que tarea desea borrar??? t2

quiero que capture esa cadena "t2" con el nombre de la variable t2 (no su valor), y ahora si, igualar el valor de t2 = 0.

Como le hago??

no se como puedo ser más claro y aclarar la duda, ayudenme.

--------------------------

na, ya no importa, ya lo solucione con otro modo.

Bueno, nos vemos.

si quieren saber que hice, fue preguntar de otra forma

Código:
fflush(stdin);
                printf("\n\nQUE TAREA DESEA ELIMINAR??  \n (Digite solo el numero de la tarea)  ");
                int borrar; scanf( "%i", &borrar);
                if(borrar == 1)
                    t[0]=0; 
                else if(borrar == 2)
                    t[1]=0;
                else if(borrar == 3)
                    t[2]=0;
                else if(borrar == 4)
                    t[3]=0;
                else if(borrar == 5)
                    t[4]=0;
 
Baya cuanto tiempo que no me paso por acá. Bien de vuelta al foro de C++, últimamente tengo en la cabeza la idea de crear un servidor de reportes, naturalmente en lenguaje C pero yo la verdad aun estoy muy viche en manejo de demonios así que se me ocurrió preguntar si ustedes conocen algún ejemplo de míniservidor que me pueda ayudar a ilustrarme. Como siempre os agradezco de antemano por la ayuda.
 
Hola,
tengo una carpeta ubicada en el escritorio (C:\Documents and Settings\Escritorio\BD)
dentro de la carpeta BD tengo una lista de sonidos .wav,
lo que necesito es abrir la carpeta para poder cargar los archivos que estan dentro de ella,
¿¿con que funcion podria abrirla???
 
Hola,
tengo una carpeta.........dentro de la carpeta BD tengo una lista de sonidos .wav..........

La carpeta no importa, lo importante son los archivos, rara vez es de utilidad conocer las características de un directorio, salvo cuando se desean hacer reportes de listas o cosas por el estilo. Asumo que lo que quieres es leer los archivos de audio para reproducirlos a alguna otra cosa, en tal caso te conviene leer esto:
http://c.conclase.net/ficheros/index.php?cap=002
http://www.esdebian.org/wiki/archivos-datos-c
http://c.conclase.net/ficheros/index.php
http://www.ual.es/~abecerra/ID/archivos.pdf
http://unefa.edu.ve/serviciostecnologicos/images/stories/Pd-servicios/varios/manejoarchivos en lenguaje c.pdf

Un ejemplo:
http://www.ubicuos.com/2009/06/29/leer-archivo-wav-en-c/
 
Rompimiento de control en 2 niveles

Buenas :D, jaja, me gustaría saber si alguien me podrías explicar o pasrame un link donde encuentre información sobre "rompimiento de control en 2 niveles" y/o "ejecución de control" en C++, Gracias de antemano.
 
buenas a todos
podrian ayudarme con una cosita porfavor??? sobre C.
Les comento:
Estoy haciendo un programa para el manejo y asignacion de turnos en una sala de sistemas. una de las opciones es Asignar Turno, solicitando o indicando: 1. El horario (1=X, 2=Y), 2. Sala (1 - 5). 3. PC (1 - 20), 4. ID, o cedula.
Eso es breve de hacer, pero lo que quiero hacer es validar que la opcion seleccionada este entre el rango de cada una de las solicitudes y que sino es asi, muestre el mensaje de error correspondiente y vuelva a preguntar por la solictud.

Por ejempo, la opcion 1, es indicar el horario, hay 2 horarios diferentes, cada identificado por numero, 1 y 2, y que si el usuario llegase a digiar 3 o mayor, salga el mensaje de error y vuelva a preguntar nuevamente por el horario.

Les pongo parte del codigo:
Código:
 if (opc==1){
            printf("\n\n\tAsignacion Turno.");
            while (horario>=3){
                printf("\n\nIndique Horario: \n\t1: 12m to 2pm.\n\t2: 8pm to 10pm.\n\t===>_");
                if (horario<3)
                    scanf("%i", &horario);
                else
                    printf("\n\t\t >>> Opcion Incorrecta <<<");
            }
            printf("\nIndique sala: 1 - 5:\n\t===>_");
            scanf("%i", &n_sala);
            printf("\nSeleccione PC: 1 - 20:\n\t===>_");
            scanf("%i", &pc);
            printf("\nIngrese numero cedula:\n\t===>_");
            scanf("%i", &ID);
            }

PD: Espero me haya hecho entender bien.
PD2: Si es necesario pongo todo el codigo que llevo hasta ahora, igual no es mucho :p

Espero me puedan ayudar, gracias!!!
 
se hace con un do while, viejo Kaamos. por ejemplo, para este codigo:

Código:
do {
         cout<<"\n\n\n\n\n\n\n\n\t Teclea '1' si quieres ver el programa en el idioma 'Espaniol'";
         cout<<"\n\n       Type '2' if you want see the output text with 'English' Language.\n\n\t\t\t\t      ";
         cin>>lang;
         if ((lang!=1) && (lang!=2)) {
            cout<<"\n\t\t\t\tTeclea 1 o 2";
            cout<<"\n\t\t\t\tType 1 or 2\n\n";
            cout<<"\t\t\tPress Any Key To Continue . . . \n";
            cout<<"\t\t   ";
            system ("pause");
            system ("cls");
         }
     }while((lang!=1) && (lang!=2));

estoy diciendo que si no es 1 o 2, entonces muestre el mensaje


seria bueno que adjuntara el codigo para ayudarlo.

salu2.
 
Bueno, este es el enunciado del problema:

A. El Departamento de Sistemas cuenta con cinco salas de sistemas, cada una de ellas con 20 computadores. Se requiere sistematizar el proceso de reserva y seguimiento de turnos para dichas salas en los dos horarios disponibles para ello (12 a 2 pm, 8 a 10 pm), los demás horarios no están disponibles pues están reservados para clases.
Implemente un menú para:
Asignar turno (solicita al usuario: horario, sala, equipo, código)
Cancelar turno (solicita al usuario: código, sala y horario). Lo busca y cancela o reporta la no existencia de turno para esa persona.
Calcular y mostrar la disponibilidad de equipos por sala por horario
Calcular y mostrar el número total de turnos asignados para el horario solicitado, el usuario indicará el horario a consultar
Salir

Y esto lo que llevo del programa, que es bastante poco por ahora jejejejeje
Igual lo que quiero es hacer el programa a prueba de bobos (como dice el profe :p ), osea validar y verificar correctamente todas las opciones y condiciones, como comentaba en mi mensaje anterior:

Código:
#include <stdio.h>

void main()
{
    int sistemas[5][20];
    int opc=0, turno, horario, n_sala, pc, flag=0;
    long int ID;

    while (opc!=5){
        printf("\tManejo Sala Sistemas UCP");
        printf("\n\nOpcion 1:\tAsignar Turno.\nOpcion 2:\tCancelar Turno.\nOpcion 3:\tDisponibilidad Equipos.\nOpcion 4:\tMostrar Datos:\nOpcion 5:\tSalir.");
        printf("\n\nDigite Opcion:_");
        scanf("%i", &opc);

        if (opc==1){
            printf("\n\n\tAsignacion Turno.");
            while (horario>=3){
                printf("\n\nIndique Horario: \n\t1: 12m to 2pm.\n\t2: 8pm to 10pm.\n\t===>_");
                if (horario<3)
                    scanf("%i", &horario);
                else
                    printf("\n\t\t >>> Opcion Incorrecta <<<");
            }
            printf("\nIndique sala: 1 - 5:\n\t===>_");
            scanf("%i", &n_sala);
            printf("\nSeleccione PC: 1 - 20:\n\t===>_");
            scanf("%i", &pc);
            printf("\nIngrese numero cedula:\n\t===>_");
            scanf("%i", &ID);
            }

    }
}
 
Buenas a todos los sabiondos!!! :p

tengo una duda, necesito implementar o por lo menos intentar hacer, aquello de MONTO ESCRITO, he estado buscando en internet pero todo lo que encuentro esta en java, php y son lenguajes que aun no manejo, pero si he podido percibir alguna idea de como se haria. Pero la duda esta es como hacerlo en C. Primordial, no estoy buscando el codigo como tal, sino saber de las personas que conocen, como podria empezar, y como lo podria hacer.

Bueno, espero me puedan ayudar
Muchisimas gracias
 
Buenas a todos los sabiondos!!! :p
tengo una duda, necesito implementar o por lo menos intentar hacer, aquello de MONTO ESCRITO.....

umm el algoritmo no es nada del otro mundo si te fijas los numeros simpre terminan en las palabras base "uno", "dos", "veinte", "cientos", "mil" y los teen "once", "doce"..."quinse" es cuestion de crear una coleccion de arreglos que contenga esas palabras clave y luego utilizar alguna rutina que leea el numero y segun su longitud y sus digitos use las letras por ejemplo:

Si la entrada es 354 el algoritmo ara:

1. Calcula longitud lon = 3 entonces es un numero de centenas asi que arranca con digamos claves[lon-1] que es un arreglo donde tienes la s palabras clave para las centenas osea claves[2] o serian unidades, 1 decimas 2 cintos y no mas porque de mil en adelante son solo particulas. Almacenas la clave an alguna variable ej: wkey="cientos".

2. Tomas el primer digito dig = 3 y sacas su palabra del arreglod e unidades wdig = unidades[dig-1] osea wdig = "tres".

3. Combinas wkey y wdig y la fguardas en algun lado donde vaya a quedar turespuesta.

4. Decrementas lon para sacar la siguente clave y procedes igual que en lso pasos 1, 2 y 3 hasta que lon = 0 lo que signific que terminaste de recorrer el numero.

La salida seria: TRESCIENTOS CINCUENTA Y CUATRO (Las que estan en negrilla son claves que debes tener almacenadas)

Bueno esta es una explicacion muy vaga pero creo que debe darte luces sobre como comenzar, dale prueba y nos cuentas como va la cosa. PAz y suerte.
 
Buenas a todos los sabiondos!!! :p

tengo una duda, necesito implementar o por lo menos intentar hacer, aquello de MONTO ESCRITO, he estado buscando en internet pero todo lo que encuentro esta en java, php y son lenguajes que aun no manejo, pero si he podido percibir alguna idea de como se haria. Pero la duda esta es como hacerlo en C. Primordial, no estoy buscando el codigo como tal, sino saber de las personas que conocen, como podria empezar, y como lo podria hacer.

Bueno, espero me puedan ayudar
Muchisimas gracias


este es la función q yo utilizo, espero q sea de tu ayuda.
Código:
AnsiString NoToLet(const char *A){
const char *numero=A;
AnsiString Letras;
int p,l=0,des;
p=0;
//Letras[0]='\0';
char N1='0',N2='0',N3='0';
int ancho=strlen(numero);
int ancho2=strlen(numero);
while(l<=ancho-1){

if(ancho2-3==0 || ancho2-6==0 || ancho2-9==0){
p=3;
des=3;
}
if(ancho2-3==-1 || ancho2-6==-1 || ancho2-9==-1){
p=2;
des=2;
}
if(ancho2-3==-2 || ancho2-6==-2 || ancho2-9==-2){
p=1;
des=1;
}
///////////////////// numeros de Cienes.
if(p==3){
N1=numero[l];
N2=numero[l+1];
N3=numero[l+2];
switch(N1){
case '0':
l++;
p--;
break;
case '1':
if(N2=='0' && N3=='0'){
Letras= Letras + " Cien ";
l+=2;
p-=2;
}else{
Letras= Letras + " Ciento ";
l++;
p--;
}
break;
case '2':
Letras= Letras + " Doscientos ";
l++;
p--;
break;
case '3':
Letras= Letras + " Trescientos ";
l++;
p--;
break;
case '4':
Letras= Letras + " Cuatroscientos ";
l++;
p--;
break;
case '5':
Letras= Letras + " Quinientos ";
l++;
p--;
break;
case '6':
Letras= Letras + " Seiscientos ";
l++;
p--;
break;
case '7':
Letras= Letras + " Setecientos ";
l++;
p--;
break;
case '8':
Letras= Letras + " Ochocientos ";
l++;
p--;
break;
case '9':
Letras= Letras + " Novecientos ";
l++;
p--;
break;
}
}
///////////////////// numeros de decenas.
if(p==2){
N1=numero[l];
N2=numero[l+1];
switch(N1){
case '0':
l++;
p--;
break;
case '1':
if(N2!='0'){
switch(N2){
case '1':Letras= Letras + " Once ";
break;
case '2':Letras= Letras + " Doce ";
break;
case '3':Letras= Letras + " Trece ";
break;
case '4':Letras= Letras + " Catorce ";
break;
case '5':Letras= Letras + " Quince ";
break;
case '6':Letras= Letras + " Diesciseis ";
break;
case '7':Letras= Letras + " Diescisiete ";
break;
case '8':Letras= Letras + " Diesciocho ";
break;
case '9':Letras= Letras + " Diescinueve ";
break;
}
}else{
Letras= Letras + " Diez ";
}
l+=2;
p-=2;
break;
case '2':
if(N2!='0'){
Letras= Letras + " Veinti";
l++;
p--;
}else{
Letras= Letras + " Veinte ";
l+=2;
p-=2;
}
break;
case '3':if(N2!='0'){
Letras= Letras + " Treinta y ";
l++;
p--;
}else{
Letras= Letras + " Treinta ";
l+=2;
p-=2;
}
break;
case '4':if(N2!='0'){
Letras= Letras + " Cuarenta y ";
l++;
p--;
}else{
Letras= Letras + " Cuarenta ";
l+=2;
p-=2;
}
break;
case '5':if(N2!='0'){
Letras= Letras + " Cincuenta y ";
l++;
p--;
}else{
Letras= Letras + " Cincuenta ";
l+=2;
p-=2;
}
break;
case '6':if(N2!='0'){
Letras= Letras + " Sesenta y ";
l++;
p--;
}else{
Letras= Letras + " Sesenta ";
l+=2;
p-=2;
}
break;
case '7':if(N2!='0'){
Letras= Letras + " Setenta y ";
l++;
p--;
}else{
Letras= Letras + " Setenta ";
l+=2;
p-=2;
}
break;
case '8':if(N2!='0'){
Letras= Letras + " Ochenta y ";
l++;
p--;
}else{
Letras= Letras + " Ochenta ";
l+=2;
p-=2;
}
break;
case '9':if(N2!='0'){
Letras= Letras + " Noventa y ";
l++;
p--;
}else{
Letras= Letras + " Noventa ";
l+=2;
p-=2;
}
break;
}
}
///////////////////// numeros ordinarios.
if(p==1){
N1=numero[l];
switch(N1){
case '0':
break;
case '1':
Letras= Letras + "Uno ";
break;
case '2':Letras= Letras + "Dos ";
break;
case '3':Letras= Letras + "Tres ";
break;
case '4':Letras= Letras + "Cuatro ";
break;
case '5':Letras= Letras + "Cinco ";
break;
case '6':Letras= Letras + "Seis ";
break;
case '7':Letras= Letras + "Siete ";
break;
case '8':Letras= Letras + "Ocho ";
break;
case '9':Letras= Letras + "Nueve ";
break;
}
l++;
}
// miles
if(N1!='0'){
if(ancho2==11 || ancho2==12 || ancho2==10)
if (ancho2==7 && N1=='1')
Letras=" Un Billon ";
else
Letras= Letras + " Billones ";


if(ancho2==8 || ancho2==9 || ancho2==7)
if (ancho2==7 && N1=='1')
Letras= " Un Millon ";
else
Letras= Letras + " Millones ";
if(ancho2==5 || ancho2==6 || ancho2==4)
if (ancho2==4 && N1=='1')
Letras= " Mil ";
else
Letras= Letras + " Mil ";
}
ancho2-=des;
}
return(Letras);
}
 
Hola Laneros !!!
Querias comentarle que soy nuevo en esto de la programacion :nervios: Veran, tengo un problemilla para crear en mi fichero de nombre "lista.h" lo siguiente:

typedef struct nodo {
int dato;
struct nodo *sig, *ant;
} nodo;


class CLista {
public:
void Ver();
private:
TNodo *primero, *ultimo, *actual;
int longitud;
int suma;
};

Me lanza varios errores de "syntax". En mi fichero main.c tengo puesto el #include "lista.h". Se remarca la linea donde tengo puesto el #include "lista.h" y me tira este error ---->> In file included from main.c

Ayuda por favor !!!
 
Hola Laneros !!!
Querias comentarle que soy nuevo en esto de la programacion :nervios: Veran, tengo un problemilla para crear en mi fichero de nombre "lista.h" lo siguiente........

Umm eso es raro estas confundiendo los roles de los archivos, lo .h son archivos de cabecera que se usan para definir tipos de datos, constantes, ordenes del preprocesador y cosas asi. Ya cundo vas a definir una clase y métodos puntuales es mejor usar archivos c/cpp; recuerda que igualmente se puede hacer:

PHP:
#include "file.c";

ó 

#include "file.cpp";

claro esta que el error que te vota de debe simplemente a que: ESTAS INCLUYENDO UNA DEFINICION DE CLASE EN UN ARCHIVO DE LENGUAJE C. LAS CLASES SOLO SE SOPORTAN EN C++, ASI QUE EL ARCHIVO DESDE DONDE INCLUYES LA DEFINICIÓN DE LA CLASE DEBE SER CON EXTENCIÓN .CPP NO .C.
 
Umm eso es raro estas confundiendo los roles de los archivos, lo .h son archivos de cabecera que se usan para definir tipos de datos, constantes, ordenes del preprocesador y cosas asi. Ya cundo vas a definir una clase y métodos puntuales es mejor usar archivos c/cpp; recuerda que igualmente se puede hacer:

PHP:
#include "file.c";

ó 

#include "file.cpp";

claro esta que el error que te vota de debe simplemente a que: ESTAS INCLUYENDO UNA DEFINICION DE CLASE EN UN ARCHIVO DE LENGUAJE C. LAS CLASES SOLO SE SOPORTAN EN C++, ASI QUE EL ARCHIVO DESDE DONDE INCLUYES LA DEFINICIÓN DE LA CLASE DEBE SER CON EXTENCIÓN .CPP NO .C.

para hacerlo más facil de entender:

archivos .h: librerias y demás
archivos .c / .cpp: archivos compilables.

esta claro lo que dijo sairus, pero es algo dificil para el novato. Después que cojas cancha no tendras problemas con estos conceptos.