Problem s programom – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Problem s programom – C / C++ – Fórum – Programujte.comProblem s programom – C / C++ – Fórum – Programujte.com

 

hawx0
Duch
5. 12. 2015   #1
-
0
-

Zdravíčko ludia možete mi pls poradiť kde mam chybu v tomto programe(jedna sa o designer pasivnych RLC filtrov)? Nie je to kompletna verzia.. potom ho budem na zaklade case1 rozširovať len potrebujem vedieť kde mam momentalne chyby .. ďakujem

// ConsoleApplication12.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <string>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>


using namespace std;

#define pi 3.14159265359

double vypocet1(double l, double c) {  //toto je vypočet frekvencie
    double frekvencia;
    frekvencia = 1/(2*pi*(sqrt(l *c)));
    return frekvencia;
}

double vypocet2(double r, double l, double vypocet1) {
    double jakost;
    jakost = (2*pi*vypocet1*l)/r;
    return jakost;
}

double vypocet3(double r, double c, double l) {
    double tlmenie;
    tlmenie = r*0,5*sqrt(c/l);
    return tlmenie;
}

double vypocet4(double r, double l, double c) {
    double prenos1;
    prenos1 = (1/(l*c));
    return prenos1;
}

double vypocet5(double r, double l, double c) {
    double prenos2;
    prenos2 = ((1/(r*c))+(r/l));
    return prenos2;
}


int _tmain(int argc, _TCHAR* argv[])
{
    string line;
    double l,r,c;

    int x;
    int aux = 1;
    while (aux) {
        printf("Co chces pocitat ? \n 1.- Seriovy RLC obvod -- 2.- Paralelný RLC obvod. \n ");
        getline(cin, line);
        x = atof(line.c_str());
        switch (x) {
                case 1:
                        printf("..::Seriovy RLC Obvod::.. \n");
                        printf("Zadaj hodnotu R (Ohm): \n");
                        getline(cin, line);
                        r = atof(line.c_str());

                        printf("Zadaj hodnotu L (H): \n");
                        getline(cin, line);
                        l = atof(line.c_str());

                        printf("Zadaj hodnotu C (F) :\n");
                        getline(cin, line);
                        c = atof(line.c_str());
                        
                        cout << "Frekvencia je: " << vypocet1(r ,c)<<" Hz"<< endl;
                        cout << "Cinitel jakosti je: " << vypocet2(r, l, vypocet1) << endl;
                        cout << "Tlmiaci pomer je: "<< vypocet3(r, l, c)<<endl;
                        cout << "Vypocet prenosu je:"<<vypocet4(r, l, c)<<"/ s^2+"<<vypocet5(r,l,c)<<"+"<<vypocet4(r,l,c)<<endl;
                        aux = 0;
                        break;
                case 2:
                        printf("..::Seriovy RLC Obvod::.. \n");
                        printf("Zadaj hodnotu R (Ohm): \n");
                        getline(cin, line);
                        r = atof(line.c_str());

                        printf("Zadaj hodnotu L (H): \n");
                        getline(cin, line);
                        l = atof(line.c_str());

                        printf("Zadaj hodnotu C (F) :\n");
                        getline(cin, line);
                        c = atof(line.c_str());

                        cout << "Vysledok je: " << vypocet2(r ,c)<<" Hz"<< endl;
                        aux = 0;
                        break;


                default:
                    printf("Error.. Zadaj 1 alebo 2 \n");
                    break;

        }
    }
    fflush(stdin);
    getchar();

    return 0;
}

Nahlásit jako SPAM
IP: 2001:67c:1220:c1b0:841f:e...–
KIIV
~ Moderátor
+43
God of flame
5. 12. 2015   #2
-
0
-

#1 hawx
pri volani:   vypocet2(r, l, vypocet1)    se tam snazis nacpat adresu, kde v pameti zacina funkce vypocet1, ne hodnotu, kterou jsi vypocital o radek vyse.

Musis si ulozit hodnotu:   double vyp1 = vypocet1(r, c);

Pak na dalsim radku tuto hodnotu vypsat jako frekvenci a ciniteli jakosti to predat jako vypocet2(r, l, vyp1)

(tu promennou musis akorat deklarovat bud mimo switch, nebo cely case 1: mit v bloku: { ... break;  }

A v case 2 ten vypocet2 volas jen jako  vypocet(r, l) - chybi ti ten treti parametr

Nahlásit jako SPAM
IP: 94.113.92.–
Program vždy dělá to co naprogramujete, ne to co chcete...
hawx0
Duch
11. 12. 2015   #3
-
0
-

Dakujem ti moc krat :) ešte jednu taku malu otazočku .. pri debugovani mi furt hadze takuto chybu a fakt si s tym už neviem dať rady :) vedel by niekto poradiť :) ?

http://imageshack.com/a/img903/2826/Jl7mwz.png
Připojen obrázek.

Připojen obrázek.

Nahlásit jako SPAM
IP: 2001:67c:1220:c1b0:52f:dc...–
KIIV
~ Moderátor
+43
God of flame
11. 12. 2015   #4
-
0
-

Z nejakeho duvodu mas v f hodnotu NULL. Ostatne ta konstrukce nedava vubec smysl:

fopen_s(&f, "text.txt", "r");
if (fopen_s(&f, "text.txt", "r")) { // proc otevirat znova?
  if (R,L,C) {                      // o co se tu proboha snazis?
    fclose(f);                      // proc zrovna tady? soubor by se mel zavrit vzdy, kdyz je otevreny, ne jen kdyz je C nenulove
  }
}
Nahlásit jako SPAM
IP: 93.91.152.–
Program vždy dělá to co naprogramujete, ne to co chcete...
hawx0
Duch
11. 12. 2015   #5
-
0
-

#4 KIIV
Som v programovaní ešte len začiatočník a chcem aby ten program načítaval hodnoty z textového suboru tak že mam textový subor v ktorom mam 3 hodnoty v každom riadku jednu a chcem aby pripradil hodnotu v prvom riadku do R hodnotu v druhom riadku k L a hodnotu v treťom riadku do C. Následne tieto hodnoty použivam vo vzorcoch, ktorých výsledky sa majú zapísať do textového suboru. Tuto posielam väčšiu časť kodu. V subore RLC.h mam definované len vzorce-tam by problem byť nemal. a tie case su dokopy 4 a su všetky rovnake-líšia sa len tým názvom (čo chceš počítať).

http://imageshack.com/a/img910/1186/YtZcEA.png

Nahlásit jako SPAM
IP: 2001:67c:1220:c1b0:52f:dc...–
KIIV
~ Moderátor
+43
God of flame
11. 12. 2015   #6
-
0
-

#5 hawx
V prvni rade to sem muzes vlozit jako kod (je na to takovy tlacitko <? a je to asi tak milionkrat lepsi, nez to sem cpat jako obrazky.

Dale asi absolutne nechapes, co dela fopen. Otviras asi 10000x soubor, nic nenactes ani nedelas, nezaviras (a nemas zase tak moc filedescriptoru na proces, aby sis to mohl dovolit)...

Vubec nechapes, co dela   if (R,L,C)  a na 110% to nedela to, co bys chtel. Nicmene co bys chtel jsem z toho vubec nepochopil.

Nahlásit jako SPAM
IP: 93.91.152.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 7 hostů

Podobná vlákna

Problém s programom — založil Kent

Problem s programom (C) — založil Cary

Problém s programom — založil Kent

Problem s programom — založil Daniel

Problém s programom — založil letsthrowq

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý